代码之家  ›  专栏  ›  技术社区  ›  sibidiba

索引“启用”字段好主意?

  •  2
  • sibidiba  · 技术社区  · 16 年前

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

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

    1 回复  |  直到 16 年前
        1
  •  1
  •   bobince    16 年前

    仅仅在服务器上创建索引没有多大用处 enabled 一个人。但创建一个复合索引可能会很有用 启用 ORDER BY optimisation .

    例如,如果这样的查询是一个常见的查询:

    SELECT * FROM things WHERE c1='foo' AND enabled=1 ORDER BY c2
    

    c1 将允许快速找到匹配的行,但仍需要使用 c2 .

    c1, c2 应该允许从索引中进行排序,大大加快了查询排序,但是缺少 在索引中,则会破坏这一点,因为它必须编译索引的匹配行列表 然后 启用 c2级 .

    如果索引是 enabled, c1, c2 c1, enabled, c2 ,整个WHERE条件和排序可以直接从索引中获取,从而得到更快的结果。

    一如既往,这取决于你在做什么查询;你应该 EXPLAIN 您最常见的查询是检查它在做什么。