我的表tbltemp大约有9条lakhs记录。这些列是:id (主键、自动增量)、name、qty、price、status、mod_date、created_date。
我的问题是:
SELECT *
FROM tbltemp
WHERE qty > 3
ORDER By Rand()
LIMIT 50它大约需要7到10秒的时间来执行。如何优化表或查询?
发布于 2012-06-01 17:59:12
您应该在qty列上创建广告索引。
不管怎么说,ORDER By Rand()很耗时……
发布于 2012-06-01 20:48:28
这是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;发布于 2012-06-02 17:02:59
在您的查询中:
SELECT * FROM tbltemp WHERE qty > 3 ORDER By Rand() LIMIT 50有关查询优化,请查看:
qty列。https://stackoverflow.com/questions/10848145
复制相似问题