3

我有以下查询:

SELECT * FROM `title_mediaasset` 
  WHERE upload_id is not null 
  ORDER BY `upload_date` DESC

它需要将近一秒钟并且不使用索引:

id  select_type      table              type    possible_keys           key     key_len  ref    rows    Extra
1   SIMPLE           title_mediaasset   ALL     upload_id,upload_id_2   NULL    NULL    NULL    119216  Using where; Using filesort

如何改进此查询?

该表包含大约 100k 个结果,明年可能会增加到 100 万个。

4

1 回答 1

2

如果您需要结果中的所有行和所有列,则无法重新编写查询以使其更好。它可能运行缓慢,因为您在upload_date.

如果您不需要所有行,LIMIT请使用,您会在ORDER BY.

如果您不需要所有列,请使用SELECT [columns you need]而不是SELECT *. 这样如果你真的需要优化查询,你可以把你需要的列放在你的索引中,这样你就可以直接从索引中读取所有内容:index on (upload_id, upload_date, [other columns in select statement]).

如果您需要所有列,或者很多列,只需添加index on (upload_id, upload_date).

于 2013-07-23T17:13:37.023 回答