网站的内容存储在 MySQL 数据库中。99% 的内容将被启用,但一些(用户、帖子等)将被禁用。大多数查询以WHERE (...) AND enabled
在“启用”字段上创建索引是个好主意吗?
网站的内容存储在 MySQL 数据库中。99% 的内容将被启用,但一些(用户、帖子等)将被禁用。大多数查询以WHERE (...) AND enabled
在“启用”字段上创建索引是个好主意吗?
单独创建索引并没有多大用处enabled
。但是创建一个包含在其中的复合索引可能很有用enabled
,以实现ORDER BY 优化。
例如,如果这样的事情是一个常见的查询:
SELECT * FROM things WHERE c1='foo' AND enabled=1 ORDER BY c2
上的索引c1
将允许快速找到匹配的行,但仍需要在单独的步骤中使用c2
.
上的索引c1, c2
应该允许从索引中进行排序,从而大大加快查询排序,但是enabled
索引中的缺少会破坏这一点,因为它必须编译由 索引的匹配行的列表c1
,然后扫描每个enabled
在对结果进行排序之前检查它的行c2
。
如果索引是enabled, c1, c2
or c1, enabled, c2
,则整个 WHERE 条件和 ORDERing 可以直接从索引中获取,从而提供更快的结果。
与往常一样,这取决于您正在执行的查询;你应该解释你最常见的查询来确定它在做什么。