1

在其中一个 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更快....,但为什么呢?两个不一样吗?

4

1 回答 1

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)。这将允许视频中的搜索潜在地更加优化,尽管它仍然严重依赖于数据。

于 2013-04-23T09:27:14.027 回答