mysql隨機(jī)查詢的優(yōu)化_MySQL教程
推薦:MySQL無法啟動(dòng)1067錯(cuò)誤的解決方法今早在對一張table 創(chuàng)建primay key過程中發(fā)生了斷電,當(dāng)電腦再次啟動(dòng)時(shí)候,發(fā)現(xiàn)mysql 服務(wù)無法啟動(dòng),使用 net start 提示 1067錯(cuò)誤,折騰了2個(gè)小時(shí)無法解決,后來只能通過手工刪除數(shù)據(jù)文件,日志文件,再啟動(dòng)服務(wù),然后導(dǎo)入數(shù)據(jù)來完成。 啟動(dòng)服務(wù)發(fā)生1067錯(cuò)誤: 1.刪除
mysql隨機(jī)查詢最常見的寫法如下:
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() 來隨機(jī)讀取記錄的話,當(dāng)數(shù)據(jù)表記錄達(dá)到30萬或者更多的時(shí)候,mysql將非常吃力.所以php手冊里給了一種方法,結(jié)合php來實(shí)現(xiàn):
首先 SELECT MIN(id), MAX(id) FROM tablename; 取數(shù)據(jù)庫里最大最小值;
然后 $id=rand($a[0],$a[1]); 產(chǎn)生一個(gè)隨機(jī)數(shù);
最后 SELECT * FROM tablename WHERE id>=’$id’ LIMIT 1 將上面產(chǎn)生的隨機(jī)數(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可解決
- 淺析一個(gè)MYSQL語法(在查詢中使用count)的兼容性問題
- 解析MySQL中INSERT INTO SELECT的使用
MySQL教程Rss訂閱編程教程搜索
MySQL教程推薦
- 如何用workbench導(dǎo)出mysql數(shù)據(jù)庫關(guān)系圖
- Mysql 常見問題匯總
- 如何用命令行進(jìn)入mysql具體操作步驟
- mysql5.6.10安裝詳細(xì)圖文教程
- SQL分組排序去重復(fù)的小實(shí)例
- 解決sql server 2005 express中sa不能登錄
- MySQL筆記之系統(tǒng)信息函數(shù)詳解
- 基于一致性hash算法(consistent hashing)的使用詳解
- MySQL查詢優(yōu)化:LIMIT 1避免全表掃描提高查詢效率
- 網(wǎng)站模板:利用Shell腳本實(shí)現(xiàn)遠(yuǎn)程MySQL自動(dòng)查詢
猜你也喜歡看這些
- 解讀用最簡單的步驟備份SQL數(shù)據(jù)庫的文件到本地
- 黑客經(jīng)驗(yàn)談 MSSQL SA權(quán)限入侵的感悟
- SQL Server 2008 數(shù)據(jù)加載創(chuàng)世界記錄
- 精華:精妙SQL語句
- 解決SQL Server 2005數(shù)據(jù)庫批量更新的辦法
- 解析配置SQL SERVER合并復(fù)制(二)建立域用戶
- sqlserver 2005連接超時(shí)采用bat命令解決
- CMD命令操作MSSQL2005數(shù)據(jù)庫(命令整理)
- 詳解SQL Server數(shù)據(jù)體系和應(yīng)用程序邏輯
- 淺析SQL子查詢實(shí)例
- 相關(guān)鏈接:
- 教程說明:
MySQL教程-mysql隨機(jī)查詢的優(yōu)化
。