我需要查询满足多个过滤条件的COUNT行。但是,我不知道将合并哪些过滤器,因此我无法创建适当的索引。
SELECT COUNT(id) FROM tbl WHERE filterA > 1000 AND filterD < 500
这非常慢,因为它必须进行全表扫描。有没有办法在我的情况下进行性能查询?
id, filterA, filterB, filterC, filterD, filterE
1, 2394, 23240, 8543, 3241, 234, 23
答案 0 :(得分:0)
这里的问题是如何在多个条件上索引数据存在某些限制。这些是标准的基本问题,并且在某种程度上ElasticSearch能够摆脱这些问题,它只是对您可能想要过滤的所有内容进行强力并行和索引。
通常一些过滤器会更常用,更具选择性,所以通常会先查看查询的实际示例,并围绕过去执行缓慢的查询构建索引。
这意味着您从慢速查询记录开始,然后首先关注最重要的查询,直到您获得可以容忍的所有内容。