在MySQL数据库中查询需要很长时间

时间:2014-02-10 02:56:13

标签: mysql

我在mysql数据库中有一个查询,它只返回50条记录,但需要18秒才能执行,这里是查询

SELECT DISTINCT a.UniqueNo, a.TorrentFilename, d.DataValue As Size
FROM (SELECT DISTINCT aa.UniqueNo, aa.TorrentFilename, aa.UploadDate
      FROM TorrentList aa INNER JOIN
           UploadList b
           ON aa.UniqueNo = b.UniqueNo INNER JOIN
           Minifile c
           ON aa.UniqueNo = c.UniqueNo
      ORDER BY aa.UploadDate DESC LIMIT 1, 50
     ) a LEFT JOIN
     TorrentInfo d
     ON a.UniqueNo = d.UniqueNo AND d.DataName='Size'
ORDER BY a.UploadDate DESC

查询有什么问题?我对它进行了很多优化,但似乎没有效果。如果我使用MS SQL,只需几毫秒就可以执行它,是不是MySQL有问题呢?

1 个答案:

答案 0 :(得分:1)

当没有索引时,SQL Server可以更好地进行连接。聚合更好(用于distinct)。

您的查询可能会使用以下索引做得更好:

UpLoadList(UniqueNo)
Minifile(UniqueNo)
TorrentList(UploadDate, UniqueNo)
TorrentList(UniqueNo, DataName)

这些不是"覆盖"桌子。但是它们应该促进子查询中的joinorder by