索引“启用”字段好主意?
-
05-10-2019 - |
题
网站的内容存储在MySQL数据库中。将启用99%的内容,但是某些(用户,帖子等)将被禁用。大多数查询以 WHERE (...) AND enabled
在“启用”字段上创建索引是一个好主意吗?
解决方案
仅在上面创建索引并不多 enabled
独自的。但是创建一个复合索引可能很有用 enabled
包括为了实现 通过优化顺序.
例如,如果这样的事情是一个常见的查询:
SELECT * FROM things WHERE c1='foo' AND enabled=1 ORDER BY c2
索引打开 c1
将允许快速找到匹配行,但仍需要在单独的步骤中使用 c2
.
索引打开 c1, c2
应该允许从索引中进行订购,从而大大加快查询分类,但缺乏 enabled
在索引中会击败这一点,因为它必须编译由索引的匹配行列表 c1
, 然后 扫描每一行以检查它 enabled
在对结果进行分类之前 c2
.
如果指数是 enabled, c1, c2
或者 c1, enabled, c2
, ,整个条件和顺序可以直接从索引中取出,从而更快地取得了结果。
与往常一样,这将取决于您在做什么问题;你应该 解释 您最常见的疑问,以确保它在做什么。
不隶属于 StackOverflow