123得票3回答
一个综合指数对于第一个字段的查询也有效吗?

假设我有一个包含字段A和B的表。我经常对A+B进行查询,所以我创建了一个复合索引(A,B)。那么仅对A进行的查询是否也会被复合索引完全优化? 此外,我还为A创建了一个索引,但是Postgres在仅对A进行查询时仍然使用复合索引。如果前面的答案是肯定的,我猜这并不重要,但是为什么默认选择复合索...

53得票1回答
索引:整数与字符串性能,如果节点数量相同 当涉及到数据库查询性能时,索引是一个非常重要的因素。在设计数据库表时,我们通常会选择使用整数或字符串作为索引字段。但是,当节点数量相同时,整数索引和字符串索引之间是否存在性能差异呢? 整数索引是将整数值存储在索引中,而字符串索引则是将字符串值存储在索引中。从存储角度来看,整数索引通常比字符串索引更紧凑,占用更少的存储空间。这意味着在相同的节点数量下,整数索引可能具有更好的性能。 此外,整数索引在比较操作上也更高效。由于整数是可以直接进行比较的原始数据类型,所以在执行查询时,数据库可以更快地找到匹配的记录。相比之下,字符串索引需要进行更复杂的比较操作,可能会导致性能下降。 然而,需要注意的是,性能差异并不是绝对的。在某些情况下,字符串索引可能比整数索引更适合。例如,当需要对文本内容进行模糊搜索或排序时,字符串索引可能更有效。 总结起来,当节点数量相同时,整数索引通常具有更好的性能。它们占用更少的存储空间,并且在比较操作上更高效。然而,具体情况还是要根据实际需求来决定使用哪种类型的索引。

我正在使用Ruby on Rails和PostgreSQL(9.4)数据库开发一个应用程序。对于我的用例来说,表中的列将经常被查找,因为应用程序的整个目的是在模型上搜索非常特定的属性。 目前我在决定是使用integer类型还是简单地使用典型的字符串类型(例如character varying(...

51得票2回答
重新索引会更新统计数据吗?

我过去一周一直在学习MS10775A课程,有一个问题是培训师无法可靠地回答的: 重新索引是否会更新统计信息? 我们在网上找到了一些讨论,有人认为会更新,也有人认为不会更新。

50得票3回答
我应该为一个表创建哪些索引,如何知道呢?

有没有办法让我找出为表创建哪些索引是最佳的方法?

41得票2回答
多列索引和性能 多列索引是一种在数据库中使用的优化技术,旨在提高查询性能。通过将多个列组合在一起创建索引,可以加快对复杂查询的处理速度。 使用多列索引可以减少数据库系统需要扫描的数据量,从而减少查询的执行时间。这种索引的设计考虑了多个列之间的关系,使得查询可以更高效地利用索引来选择和过滤数据。 但是,创建多列索引也会增加数据库的维护成本。由于索引需要占用额外的存储空间,并且在数据修改操作时需要更新索引,因此可能会导致写操作的性能下降。 为了获得最佳的性能,必须谨慎选择要创建多列索引的列。仅当经常用于查询的列组合时,才应考虑创建多列索引。此外,还应考虑查询的选择性,以确保索引能够过滤掉大部分不符合条件的行。 总之,多列索引可以显著提高数据库查询的性能,但在设计和使用时需要权衡维护成本和查询性能。正确选择要创建索引的列组合,并定期进行性能调优,可帮助最大程度地发挥多列索引的优势。

我有一个带有多列索引的表,对于如何正确排序索引以获得查询的最大性能,我有一些疑问。 情况如下: - PostgreSQL 8.4,表中约有一百万行数据 - 列c1的值可以有大约100个不同的值。我们可以假设这些值是均匀分布的,所以每个可能的值大约有10000行数据。 - 列c2的值可以有1...

40得票1回答
我应该使用许多单字段索引,而不是特定的多列索引吗?

这个问题是关于 SQL Server 索引技术的有效性。我认为它被称作“索引交集”。 我正在处理一个已有的 SQL Server(2008)应用程序,它存在一些性能和稳定性问题。开发人员在索引方面做了一些奇怪的事情。我无法得出这些问题的确切基准测试结果,也找不到任何真正好的文档在网络上。 ...

33得票1回答
SQL Server在缺失索引请求中如何确定关键列的顺序?

SQL Server在查询计划中如何确定缺失索引建议的关键列顺序?

29得票2回答
如何判断我是否有过多的索引? 当你在数据库中创建索引时,索引的数量是需要谨慎考虑的。过多的索引可能会导致性能下降、增加存储空间和维护成本。以下是一些判断是否有过多索引的指标: 1. 监控查询性能:如果你的查询速度变慢,可能是因为索引太多而导致数据库执行计划混乱。定期监控查询性能可以帮助你确定是否有过多的索引。 2. 分析索引使用率:通过查看索引的使用情况,你可以了解哪些索引被频繁使用,哪些几乎没有被使用。如果某个索引很少被查询使用,那么它可能是一个不必要的索引。 3. 考虑索引覆盖:索引覆盖是指查询所需的数据都可以从索引中获取,而无需访问实际的数据行。如果你的查询经常需要访问大量的数据行,那么可能需要更多的索引来提高查询性能。 4. 定期清理无用索引:当你发现某个索引几乎没有被使用时,可以考虑删除它。但在删除之前,请确保对该索引进行了充分的测试,以避免对系统性能造成负面影响。 总之,判断是否有过多的索引需要综合考虑查询性能、索引使用率和索引覆盖等因素。通过定期监控和优化索引,你可以确保数据库的高效运行。

运行Microsoft SQL Server Profiler时,它不时会建议我创建一堆新的索引和统计信息("...预计改进97%...")。 据我理解,每添加一个索引都可以加快SQL的SELECT查询速度,但同时也会使UPDATE或INSERT查询变慢,因为需要调整索引。 我想知道的是,...

27得票1回答
使用MaxBCPThreads拆分事务复制的快照文件

我刚刚建立了一个发布,我正在尝试加快应用快照的速度。到目前为止,分发代理(Distribution Agent)遵守了MaxBCPThreads设置,但是快照代理(Snapshot Agent)没有。我希望它能够将文件拆分,以便分发代理的线程可以获取数据。但无论何时进行快照,似乎它都无法做到。...

25得票2回答
为什么不使用在IS NULL值上的过滤索引?

假设我们有一个像这样的表定义: CREATE TABLE MyTab ( ID INT IDENTITY(1,1) CONSTRAINT PK_MyTab_ID PRIMARY KEY ,GroupByColumn NVARCHAR(10) NOT NULL ,Whe...