Ver*_* D. 4 postgresql index sql-server statistics
我正在做一个必须支持两个数据库引擎的项目;SQL Server 和 PostgreSQL。
我们使用 NHibernate 作为 ORM。
我们遇到了某些查询的性能问题。使用 SQL Server 工具,我们提出了几个新的索引和统计数据,大大提高了 SQL Server 的性能。但是,我不确定如何在 PostgreSQL 上实现相同的索引和统计信息。
两个例子是:
CREATE STATISTICS [perfStat_Answer_02] ON [dbo].[Answer]
([InclusionExpressionGroupId], [QuestionId], [AnswerId])
CREATE NONCLUSTERED INDEX [perf_Answer_01] ON [dbo].[Answer]
(
[QuestionId] ASC
)
INCLUDE (
[AnswerId],
[InclusionExpressionGroupId],
[AnswerConceptId],
[Revision],
[AnswerText],
[AnswerOrder]
)
WITH (
SORT_IN_TEMPDB = OFF
, IGNORE_DUP_KEY = OFF
, DROP_EXISTING = OFF
, ONLINE = OFF)
ON [PRIMARY]
Run Code Online (Sandbox Code Playgroud)
INCLUDE如果存在这样的功能,PostgreSQL 中 d 字段的语法是什么?
我们如何添加统计信息?
阅读 PostgreSQL 文档,我不相信两者都受支持。但是,我想知道是否有任何方法可以完成类似的事情。
我不知道有什么CREATE STATISTICS作用,但是优化器的统计信息是在运行ANALZYE时使用命令收集的autovacuum- 默认情况下是打开的。
始终为所有列收集统计信息,无需专门打开它。
您可以使用 控制在每列的基础上为统计信息收集的详细信息级别ALTER TABLE ... ALTER COLUMN column SET STATISTICS integer。
PostgreSQL 中的索引始终是非聚集的,因此我假设上述索引映射到QuestionId列上的常规索引。
不确定INCLUDE部分。如果优化器选择了该索引,我认为这是支持仅索引检索。由于 PostgreSQL 还没有仅索引检索,因此没有等效的技术。
| 归档时间: |
|
| 查看次数: |
2550 次 |
| 最近记录: |