1

我的桌子tbltemp上有大约 90 万条记录。这些列是:(主键,id自动增量)name,,,,,,,,,。qtypricestatusmod_datecreated_date

我的查询是:

SELECT * 
 FROM tbltemp 
 WHERE qty > 3 
 ORDER By Rand() 
 LIMIT 50

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

4

3 回答 3

0

在您的查询中:

SELECT * FROM tbltemp WHERE qty > 3 ORDER By Rand() LIMIT 50

对于查询优化,请看一下:

  1. ORDER BY 子句是耗时长的主要原因。
  2. 将索引添加到qty列。
  3. 另外你使用的存储引擎也会影响查询的性能优化。MYISAM是最快的存储引擎。
于 2012-06-02T09:02:59.140 回答
0

qty您应该在列上创建广告索引。
总之ORDER By Rand()很费时间...

于 2012-06-01T09:59:11.977 回答
0

这是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-01T12:48:28.170 回答