mysql隨機查詢的優(yōu)化_MySQL教程
推薦:MySQL無法啟動1067錯誤的解決方法今早在對一張table 創(chuàng)建primay key過程中發(fā)生了斷電,當電腦再次啟動時候,發(fā)現(xiàn)mysql 服務(wù)無法啟動,使用 net start 提示 1067錯誤,折騰了2個小時無法解決,后來只能通過手工刪除數(shù)據(jù)文件,日志文件,再啟動服務(wù),然后導(dǎo)入數(shù)據(jù)來完成。 啟動服務(wù)發(fā)生1067錯誤: 1.刪除
mysql隨機查詢最常見的寫法如下:
1 SELECT * FROM tablename ORDER BY RAND() LIMIT 1
php手冊上如此解釋:
About selecting random rows from a MySQL table:
SELECT * FROM tablename ORDER BY RAND() LIMIT 1
works for small tables, but once the tables grow larger than 300,000 records or so this will be very slow because MySQL will have to process ALL the entries from the table, order them randomly and then return the first row of the ordered result, and this sorting takes long time. Instead you can do it like this (atleast if you have an auto_increment PK):
SELECT MIN(id), MAX(id) FROM tablename;
Fetch the result into $a
$id=rand($a[0],$a[1]);
SELECT * FROM tablename WHERE id>=’$id’ LIMIT 1.
大意是說,如果你用 ORDER BY RAND() 來隨機讀取記錄的話,當數(shù)據(jù)表記錄達到30萬或者更多的時候,mysql將非常吃力.所以php手冊里給了一種方法,結(jié)合php來實現(xiàn):
首先 SELECT MIN(id), MAX(id) FROM tablename; 取數(shù)據(jù)庫里最大最小值;
然后 $id=rand($a[0],$a[1]); 產(chǎn)生一個隨機數(shù);
最后 SELECT * FROM tablename WHERE id>=’$id’ LIMIT 1 將上面產(chǎn)生的隨機數(shù)帶入查詢;
很顯然上面是最有效率的。
如果需要多條記錄的話,就循環(huán)查詢,并記得去除重復(fù)記錄。
其它的一些方法可以自行查閱一下google或者百度。
分享:MySQL數(shù)據(jù)庫備份和還原的常用命令備份MySQL數(shù)據(jù)庫的命令(-h與hostname,-u與username之間可以有空格,但-p與password之間不能有空格,故一般均無需空格) mysqldump -hhostname -uusername -ppassword databasename backupfile.sql 備份MySQL數(shù)據(jù)庫為帶刪除表的格式 備份MySQL數(shù)據(jù)庫為帶刪除表的格式,
- MSSQL清空日志刪除日志文件
- 關(guān)于數(shù)據(jù)庫中保留小數(shù)位的問題
- 解析mysql與Oracle update的區(qū)別
- mysql 導(dǎo)入導(dǎo)出數(shù)據(jù)庫以及函數(shù)、存儲過程的介紹
- MySQL——修改root密碼的4種方法(以windows為例)
- 解決MYSQL出現(xiàn)Can''t create/write to file ''#sql_5c0_0.MYD''的問題
- 深入理解SQL的四種連接-左外連接、右外連接、內(nèi)連接、全連接
- 解析:內(nèi)聯(lián),左外聯(lián),右外聯(lián),全連接,交叉連接的區(qū)別
- mysql出現(xiàn)“Incorrect key file for table”處理方法
- mysql重裝后出現(xiàn)亂碼設(shè)置為utf8可解決
- 淺析一個MYSQL語法(在查詢中使用count)的兼容性問題
- 解析MySQL中INSERT INTO SELECT的使用
- 相關(guān)鏈接:
- 教程說明:
MySQL教程-mysql隨機查詢的優(yōu)化
。