我的表tbltemp
有大約9萬記錄。這些列是:id
(主鍵,自動增量),name
,qty
, price
, status
,mod_date
,created_date
。Mysql查詢時間長
我的查詢是:
SELECT *
FROM tbltemp
WHERE qty > 3
ORDER By Rand()
LIMIT 50
大約需要7到10秒來執行。我怎樣才能優化我的表或查詢?
我的表tbltemp
有大約9萬記錄。這些列是:id
(主鍵,自動增量),name
,qty
, price
, status
,mod_date
,created_date
。Mysql查詢時間長
我的查詢是:
SELECT *
FROM tbltemp
WHERE qty > 3
ORDER By Rand()
LIMIT 50
大約需要7到10秒來執行。我怎樣才能優化我的表或查詢?
這是order by rand()
的替代品。試試這個一次,看看它是否
select @lims := floor(1+rand()*(count(*) - 1)) from tbltemp;
PREPARE mystatement FROM "SELECT * FROM tbltemp WHERE qty > 3 LIMIT ?, 50";
EXECUTE mystatement USING @lims;
在您的查詢:
SELECT * FROM tbltemp WHERE qty > 3 ORDER By Rand() LIMIT 50
查詢優化請看看:
qty
列。
可能重複[如何優化MySQL的ORDER BY RAND()函數?](http://stackoverflow.com/questions/1244555/how-can-i-optimize-mysqls-order-by-rand功能) – Interrobang
爲什麼你必須在這裏執行'ORDER By Rand()'? – Rahul
query' select * from tbltemp where qty> 3 ORDER By id Limit 50'需要多長時間? – Rahul