这是因为它没有那么简单。它主要不取决于表的大小,而是取决于表中的数据及其分布、修改数据的方式,最重要的是取决于查询。
因此,从持久状态来看,几乎不可能做出这个决定,即使有了更多的信息,也需要相当多的人工智能。
PG计划器统计信息的一个问题是无法计算表内所有行的统计信息。PG总是使用表格的一小部分来计算统计数据(样本百分比(。这种方式在大表中有一个巨大的缺点:它将忽略一些重要的值,这些值在估计执行计划的某些操作的基数时会产生影响。这可能会导致使用不适当的算法。
说明:http://mssqlserver.fr/postgresql-vs-sql-server-mssql-part-3-very-extremely-detailed-comparison/
特别是§12–Planer统计
PG不接受";全扫描";stat,是因为它需要太多的时间来计算!事实上,PostgreSQL在许多维护任务中(如统计数据重新计算(都很慢,正如我在这里揭示的那样:http://mssqlserver.fr/postgresql-vs-microsoft-part-1-dba-queries-performances/
在其他一些RDBMS中,可以执行UPDATE STATISTICS。。。与FULLSCAN(以Microsoft SQL Server为例(相比,这不需要花费太多时间,因为MS SQL Server与PostGreSQL无法执行的多个线程并行执行…
结论:PostGreSQL从来不是为巨大的表而设计的。如果您想处理大表并具有性能,请考虑使用另一个RDBMS。。。
只需看看PostGreSQL与MS SQL Server相比的COUNT性能:http://mssqlserver.fr/postgresql-vs-microsoft-sql-server-comparison-part-2-count-performances/