|
1
|
| Fred Hors · 技术社区 · 5 年前 |
|
|
1
1
好啊这是基于我对SQL Server和SQL的总体了解,但它可能也适用于这里。
一开始因为你在做一件事
非聚集索引(如果使用的话)的用途是识别相关的行,然后它会逐个挑选这些行(a) 嵌套循环联接 ,或有时称为索引查找/扫描+键查找)。 如果有太多的行,这实际上是低效的——你最终会进行更多的读取/等等,而不仅仅是读取整个表。 减少LIKE过滤器的长度会增加基数估计,例如,增加过滤器在查询计划器/优化程序中预期匹配的行数。 我猜SQL引擎会进行猜测(包括索引/数据的统计数据),并确定简单地从聚集索引中读取所有数据可能比确定行并逐个读取更有效。 更新操作后更新重新删除限制。 好同样,这取决于它基于过滤器估计的行数。 想象一下,如果您在原始查询中执行类似于“%e%”的操作。每一排都可能与之匹配。由于您没有排序,它只需要读取(比如)聚集索引的前30行,就可以得到您的答案。再一次,查询规划者/优化者可能会得出结论,这将是获得这些信息的最有效方式。 但是,如果没有限制,它将需要读取所有行以获得所有结果。
|
|
2
1
字符串越短,条件的选择性就越低。根据它的估计,PostgreSQL认为,对于短字符串,足够多的行符合以下条件:只按顺序获取行并丢弃不匹配的行,直到找到15个匹配的行,这样成本更低。
众多
|
|
|
Johnny T · 基于当前值的SQL合并表[重复] 1 年前 |
|
|
Peter Schofield · 类型转换Postgresql 1 年前 |
|
|
Kevin Smeeks · Pyspark JDBC分区读取 1 年前 |
|
|
Andrus · 如何在sql中查找第二个匹配项 1 年前 |