2

网站的内容存储在 MySQL 数据库中。99% 的内容将被启用,但一些(用户、帖子等)将被禁用。大多数查询以WHERE (...) AND enabled

在“启用”字段上创建索引是个好主意吗?

4

1 回答 1

1

单独创建索引并没有多大用处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, c2or c1, enabled, c2,则整个 WHERE 条件和 ORDERing 可以直接从索引中获取,从而提供更快的结果。

与往常一样,这取决于您正在执行的查询;你应该解释你最常见的查询来确定它在做什么。

于 2010-05-28T17:39:39.567 回答