mysql - MySQL SELECT 查询中的性能问题?

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

最佳答案

假设表 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)。这将使视频中的搜索可能更加优化,尽管它仍然在很大程度上取决于数据。

关于mysql - MySQL SELECT 查询中的性能问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16165505/

相关文章:

mysql - Sequelize - 如何获取所有地点的所有员工

mysql - NodeJS 和 mysql : wait for query result

php - MySQL - 将 3 行变成 3 列

mysql - 当 child 数学标准时选择父记录

python - 将 CREATE TABLE、ADD COLUMNS、PRIMARY KEY、AS SELECT 和 WHERE 合并为一项操作

MySQL IPv4 验证实现

mysql - 防止SQL注入(inject)

php - 将数据插入 decimal(12,2) 类型的数据库表字段

MySQL 将数据 VARCHAR 转换为 DATETIME

php - 在 mysql 中使用内部连接和 concat() 操作查询问题