我有一个查询及其关联的query and query plan(参见要点)模拟数据。
表lte_data_tenmillion中的行数为10000000 表订户数据中的行数为100000
对于这两个表,没有任何行在subscriber_id列中具有空值。
我发现很难理解为什么查询计划显示扫描的行数(应用谓词后:subscriber_id不为null(类型:布尔值)),恰好是原始行数的一半。< / p>
与订户表的过滤器运算符类似。
此外,“文件输出操作员[FS_20]”中提到的结果数据的总行数为5500000.但是,结果表中的实际行数为2499723。
我可能错误地解释了查询计划。如果有人能够清除我在查询计划中观察到的不一致性和实际结果,我将非常感激。
谢谢!
答案 0 :(得分:0)
统计数据并不新鲜。使用def self.search(search)
Collection.joins(posts: :tags).where({tags: {name: search}})
end
命令分析每个表,然后再次检查计划。
还要添加
analyze table <table name> compute statistics;
在解释命令之前。