首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mysql查询耗时较长

问Mysql查询耗时较长
EN

Stack Overflow用户
提问于 2012-06-01 17:56:43
回答 3查看 162关注 0票数 1

我的表tbltemp大约有9条lakhs记录。这些列是:id (主键、自动增量)、name、qty、price、status、mod_date、created_date。

我的问题是:

代码语言:javascript
复制
SELECT * 
 FROM tbltemp 
 WHERE qty > 3 
 ORDER By Rand() 
 LIMIT 50

它大约需要7到10秒的时间来执行。如何优化表或查询?

EN

回答 3

Stack Overflow用户

发布于 2012-06-01 17:59:12

您应该在qty列上创建广告索引。

不管怎么说,ORDER By Rand()很耗时……

票数 0
EN

Stack Overflow用户

发布于 2012-06-01 20:48:28

这是order by rand()的一个替代方案。试一试,看看它是否有效

代码语言:javascript
复制
select @lims := floor(1+rand()*(count(*) - 1)) from tbltemp;  

PREPARE mystatement FROM "SELECT * FROM tbltemp WHERE qty > 3 LIMIT ?, 50";

EXECUTE mystatement USING @lims;
票数 0
EN

Stack Overflow用户

发布于 2012-06-02 17:02:59

在您的查询中:

代码语言:javascript
复制
SELECT * FROM tbltemp WHERE qty > 3 ORDER By Rand() LIMIT 50

有关查询优化,请查看:

  1. ORDER BY子句是耗时较长的主要原因。
  2. 将索引添加到qty列。
  3. 您正在使用的存储引擎也会影响query.MYISAM的性能优化。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10848145

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档