【问题标题】:Performance issues in MySQL SELECT queries?MySQL SELECT 查询中的性能问题?
【发布时间】:2013-04-23 09:16:21
【问题描述】:

在其中一个 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 子句之后放置索引字段更快....,但为什么呢?两者不一样吗?

【问题讨论】:

标签: mysql


【解决方案1】:

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-09-30
  • 2012-07-18
  • 2021-07-10
  • 1970-01-01
  • 2016-09-29
  • 2011-08-16
  • 2023-03-24
相关资源
最近更新 更多