Mysql查询花费了很长时间
我的表Mysql查询花费了很长时间,mysql,optimization,Mysql,Optimization,我的表tbltemp有大约90万条记录。列为:id(主键,自动递增),名称,数量,价格,状态,修改日期,创建日期 我的问题是: SELECT * FROM tbltemp WHERE qty > 3 ORDER By Rand() LIMIT 50 执行大约需要7到10秒。如何优化我的表或查询?您应该在数量列上创建广告索引。 无论如何,orderbyrand()非常耗时……这里有一个orderbyrand()的替代方案。试试这个,看看是否有效 select @lims :
tbltemp
有大约90万条记录。列为:id
(主键,自动递增),名称
,数量
,价格
,状态
,修改日期
,创建日期
我的问题是:
SELECT *
FROM tbltemp
WHERE qty > 3
ORDER By Rand()
LIMIT 50
执行大约需要7到10秒。如何优化我的表或查询?您应该在
数量
列上创建广告索引。无论如何,
orderbyrand()
非常耗时……这里有一个orderbyrand()
的替代方案。试试这个,看看是否有效
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
有关查询优化,请查看:
数量
列中添加索引可能重复您为什么必须在此处执行
ORDER By Rand()
?查询从tbltemp中选择*多长时间,其中数量>3按id订购限制50
需要?@Interrobang不完全-其他问题限制结果为一行,而此处有多行。这里发现的解决方案不适用。您可以查看一下。这是一个可选的好东西,但根本不需要。我确信如果他运行查询select*from tbltemp,其中数量>3按id订购限制50
。。。会快得多。我想在每次用户刷新我的页面时显示随机列表。这就是为什么我在query@Rahul中使用“ORDER BY RAND()”