PostgreSQL 查询计划是否取决于 table 行数?
Do PostgreSQL query plans depend on table row count?
我的用户 table 还没有很多行……。
同一个查询的查询计划是否会随着 table 的增长而改变?
也就是说,要查看我的应用程序将如何扩展,我是否应该在使用 EXPLAIN
之前为我的 users
table 播种数十亿行?
估计的行数可能是影响选择哪个查询计划的最重要因素。
两个支持这一点的例子:
如果在 table 的索引列上使用 WHERE
条件,可能会发生三种情况:
如果table非常小或者符合条件的行比例很高,将使用顺序扫描读取整个table并过滤掉符合条件的行。
如果 table 很大并且符合条件的行的百分比很低,将使用索引扫描。
如果table很大并且中等百分比的行匹配条件,将使用位图索引扫描。
如果连接两个 table,table 上的估计行数将决定是否选择嵌套循环连接。
我的用户 table 还没有很多行……。
同一个查询的查询计划是否会随着 table 的增长而改变?
也就是说,要查看我的应用程序将如何扩展,我是否应该在使用 EXPLAIN
之前为我的 users
table 播种数十亿行?
估计的行数可能是影响选择哪个查询计划的最重要因素。
两个支持这一点的例子:
如果在 table 的索引列上使用
WHERE
条件,可能会发生三种情况:如果table非常小或者符合条件的行比例很高,将使用顺序扫描读取整个table并过滤掉符合条件的行。
如果 table 很大并且符合条件的行的百分比很低,将使用索引扫描。
如果table很大并且中等百分比的行匹配条件,将使用位图索引扫描。
如果连接两个 table,table 上的估计行数将决定是否选择嵌套循环连接。