:date OR updated_at > :date)", :dat-6ren">
gpt4 book ai didi

mysql - Rails - 对三个表列进行查询的索引

转载 作者:可可西里 更新时间:2023-11-01 08:36:25 26 4
gpt4 key购买 nike

我有一个经常使用的查询:

Site.where("mobile_visible = true AND (created_at > :date OR updated_at > :date)", :date => "12-04-30")

它产生这个sql

SELECT `sites`.* FROM `sites` WHERE (mobile_visible = true AND (created_at > '12-04-30' OR updated_at > '12-04-30'))

我想添加一个或多个索引来使这个查询更有效率。我应该为 3 列分别添加 3 个索引还是为所有三列分别添加 1 个索引?

最佳答案

最好的方法是构建一个索引来命中 you're where 子句的所有元素——而不仅仅是一个元素。

对于查询的特定部分,数据库通常一次不能使用多个索引。如果您添加三个索引,数据库将尝试确定哪个索引带来的好处最大,然后选择那个索引。根据查询执行计划的确定方式,它可能会选择也可能不会选择最佳的。

对于这种情况,我建议添加索引:

add_index :sites, [:mobile_visible, :created_at, :updated_at]

关于mysql - Rails - 对三个表列进行查询的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10496797/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com