MySQL SELECT查询中的性能问题?

时间:2013-04-23 09:16:22

标签: mysql

在其中一个Facebook群组中,有人问了一个问题:

假设我们有2个查询。

SELECT * FROM video WHERE video_id='45f54' AND video_type='youtube';

SELECT * FROM video WHERE video_type='youtube' AND video_id='45f54'

video_id是一个索引字段。

这两个查询的效果有何不同?

有人在WHERE子句更快之后回答了索引字段....但为什么呢?两个都不一样吗?

1 个答案:

答案 0 :(得分:2)

假设表video相同,那么这两个查询实际上是相同的,因为MySQL优化器将在内部处理WHERE条件。以下是一些指向类似问题的链接

对于优化,您可能希望考虑以下(如果尚未完成)

  • 将video_type更改为ENUM(),甚至是通过INTEGER链接的单独表格
  • 在更改为video_type之后索引(video_type,video_id)。
  • 限制video_id的长度,即CHAR(5),如果它们总是长5个字符

就个人而言,我会创建一个新表“video_types”(videotypeID SMALLINT UNSIGNED AUTO_INCREMENT,videotype VARCHAR)。这将使视频中的搜索可能更加优化,尽管它仍然依赖于数据。