我的桌子tbltemp
上有大约 90 万条记录。这些列是:(主键,id
自动增量)name
,,,,,,,,,。qty
price
status
mod_date
created_date
我的查询是:
SELECT *
FROM tbltemp
WHERE qty > 3
ORDER By Rand()
LIMIT 50
执行大约需要 7 到 10 秒。如何优化我的表或查询?
我的桌子tbltemp
上有大约 90 万条记录。这些列是:(主键,id
自动增量)name
,,,,,,,,,。qty
price
status
mod_date
created_date
我的查询是:
SELECT *
FROM tbltemp
WHERE qty > 3
ORDER By Rand()
LIMIT 50
执行大约需要 7 到 10 秒。如何优化我的表或查询?
在您的查询中:
SELECT * FROM tbltemp WHERE qty > 3 ORDER By Rand() LIMIT 50
对于查询优化,请看一下:
qty
列。qty
您应该在列上创建广告索引。
总之ORDER By Rand()
很费时间...
这是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;