测试
|
Sql语句
|
查询结果行数
|
多个(单列)索引运行时间
|
单个(多列)索引运行时间
|
结论
|
删除一天数据
|
Declare @minCreatedDate
Datetime; Set @minCreatedDate=
Convert(DateTime,'2010-4-25 00:00:00',120);
DELETE
from u_ch_Contact where CreatedDate
between @minCreatedDate
and dateadd(day,1,@minCreatedDate);
|
40822 行
|
SQL Server Execution Times:
CPU time = 17031 ms, elapsed time = 633199 ms.
(00:10:34)
|
SQL Server Execution Times:
CPU time = 10405 ms, elapsed time = 39571 ms.
(00:00:39)
|
单个(多列)索引明显比多个(单列)索引在Del数据时花费的时间要短很多。
|
CustomerID(单列)索引和(多列)索引下查询性能对比
|
SELECT
* FROM u_ch_contact
WHERE CustomerId='F9F268C1-A234-4716-9FC8-00022B2DE8E4'
|
42行
|
SQL Server Execution Times:
CPU time = 0 ms, elapsed time = 1345 ms.
(00:00:01)
|
SQL Server Execution Times:
CPU time = 31049 ms, elapsed time = 21414 ms.
(00:00:21)
|
(单列)索引比(多列)索引在查询数据花费时间要短很多,主要表现在(单列)索引用的是索引查找,(多列)索引用的是索引扫描
|
CreatedBy(单列)索引和(多列)索引下查询性能对比
|
SELECT
* FROM u_ch_contact
WHERE CreatedBy='B8056067-5DBA-41A0-B6CB-01CDFBAC517E'
|
19099 行
|
SQL Server Execution Times:
CPU time = 422 ms, elapsed time = 37038 ms.
(00:00:37)
|
SQL Server Execution Times:
CPU time = 35842 ms, elapsed time = 19708 ms.
(00:00:19)
|
奇怪!(多列)索引比(单列)索引花费时间要短,但(单列)索引第二次运行Sql语句时间缩短为(CPU
time = 218 ms, elapsed time = 733 ms.),而(多列)索引第二次运行Sql语句时间缩短接近一半(CPU
time = 35734 ms, elapsed time = 10806 ms.)。同样表现为(单列)索引用的是索引查找,(多列)索引用的是索引扫描
|
ContactTime(单列)索引和(多列)索引下查询性能对比
|
SELECT
* FROM u_ch_contact
WHERE ContactTime BETWEEN
'2010-03-01' AND
'2010-03-30'
|
886469行
|
SQL Server Execution Times:
CPU time = 8047 ms, elapsed time = 120984 ms.
(00:02;01)
|
SQL Server Execution Times:
CPU time = 7579 ms, elapsed time = 143798 ms.
(00:02:24)
|
(单列)索引比(多列)索引在查询数据花费时间要短些,但差距不是大很多。查看执行计划发现(单列)索引和(多列)索引用的都是索引扫描
|
ContactTelNo(单列)索引和(多列)索引下查询性能对比
|
SELECT
* FROM u_ch_contact
WHERE ContactTelNo='15121007351'
|
36行
|
SQL Server Execution Times:
CPU time = 0 ms, elapsed time = 972 ms.
(00:00:01)
|
SQL Server Execution Times:
CPU time = 47282 ms, elapsed time = 17972 ms.
(00:00:41)
|
(单列)索引比(多列)索引在查询数据花费时间要短很多,主要表现在(单列)索引用的是索引查找,(多列)索引用的是索引扫描
|
CreateDate(单列)索引和(多列)索引下查询性能对比
|
SELECT
* FROM dbo.u_ch_Contact
WHERE CreatedDate BETWEEN
'2010-03-01' AND
'2010-03-30'
|
886461 行
|
SQL Server Execution Times:
CPU time = 7078 ms, elapsed time = 125751 ms.
(00:02:05)
|
SQL Server Execution Times:
CPU time = 7750 ms, elapsed time = 129782 ms.
(00:02:10)
|
(单列)索引比(多列)索引在查询数据花费时间要短些,但非常细微的差距。查看执行计划发现(单列)索引和(多列)索引用的都是索引扫描
|
EscalatedTo,Escalated(2列)索引和(多列)索引下查询性能对比
|
SELECT
* FROM dbo.u_ch_Contact
WHERE EscalatedTo='BDD4DE94-A75E-4F00-9FD8-06917B856CC1'
AND Escalated=0
|
229行
|
SQL Server Execution Times:
CPU time = 15 ms, elapsed time = 311 ms.
(00:00:00)
|
SQL Server Execution Times:
CPU time = 35204 ms, elapsed time = 11806 ms.
(00:00:11)
|
(单列)索引比(多列)索引在查询数据花费时间要短很多,主要表现在(单列)索引用的是索引查找,(多列)索引用的是索引扫描
|
EscalatedTo,status(2列)索引和(多列)索引下查询性能对比
|
SELECT
* FROM dbo.u_ch_Contact
WHERE EscalatedTo='BDD4DE94-A75E-4F00-9FD8-06917B856CC1'
AND status=3
|
6004 行
|
SQL Server Execution Times:
CPU time = 328 ms, elapsed time = 7449 ms.
(00:00:07)
|
SQL Server Execution Times:
CPU time = 34811 ms, elapsed time = 13253 ms.
(00:00:13)
|
(单列)索引比(多列)索引在查询数据花费时间要短很多,主要表现在(单列)索引用的是索引查找,(多列)索引用的是索引扫描
|
相关推荐
本文将深入探讨单列索引和多列索引的使用,并介绍多列索引中的最左前缀原则。 1. 单列索引 单列索引,顾名思义,是在单个列上创建的索引。创建索引的主要目的是优化WHERE子句和JOIN子句中的列。例如,如果一个查询...
本文将深入探讨如何管理和优化存储着千万级别数据的表,以"t_order"为例,该表可能存在于您提供的压缩包文件"t_order.sql"中。 一、数据库设计与规范 在设计千万级别的数据表时,遵循数据库设计范式至关重要。"t_...
通过将非键列添加到非聚集索引的叶级别,可以创建覆盖更多查询的非聚集索引。 重要概念: * 覆盖查询:当索引包含查询引用的所有列时,它通常称为“覆盖查询”。 * 索引覆盖:如果返回的数据列就包含于索引的键值...
### Oracle中亿级记录表创建索引的知识点详解 #### 一、背景介绍 在Oracle数据库中处理亿级数据量的表时,合理的索引设计是优化查询性能的关键因素之一...通过以上步骤和建议,可以有效地提高大规模数据表的查询性能。
《SQL Server 2005优化千万级别数据记录与索引优化实践》 在数据库管理领域,处理千万级别的数据记录是一项挑战,尤其是在SQL Server 2005这样的环境中。本文将分享一位开发者针对SqlSever2005一千万条以上记录的...
在Oracle数据库中,为含有千万级别记录的大表创建索引是一项挑战性任务,尤其是对于那些处于高并发在线生产环境中的表。本文将详细介绍如何为一个核心大表(INFO_CUSTOMER)创建一个全局B树索引,并在此过程中尽可能...
- **查询性能**:对于单列查询,聚集索引通常比非聚集索引快,因为它直接指向数据行。而对于多列查询,尤其是涉及到联合索引的情况,非聚集索引可能更优。 - **更新性能**:由于聚集索引会影响数据行的物理顺序,...
- **前缀索引**:如果本地索引的索引列以分区键开头,则该索引称为前缀局部索引(Prefix Local Index)。 - **非前缀索引**:如果索引的列不是以分区键开头,或者不包含分区键列,则该索引称为非前缀索引(Non-...
在数据库管理中,查询索引对应的表和列是一项基本但重要的技能,它有助于优化查询性能、维护数据库结构以及解决各种数据处理问题。根据给定的文件信息,我们将深入探讨如何查询索引及其关联的表和列,特别是通过两种...
索引顺序表作为一种有效的数据组织形式,在处理大量有序数据时展现出优秀的性能。通过对索引表的设计和优化,可以大大提高查找操作的速度,适用于多种实际应用场合。掌握索引顺序表的原理及其实现方法对于程序员来说...
oracle 全文检索 oracle全文索引 多列字段检索,匹配多列字段搜索功能。
在 MySql 单表中数据达到千万级别时,数据的分页查询结果时间过长,对此进行优达到最优效果,也就是时间最短。为了解决这个问题,我们需要了解 MySQL 数据库的分页原理和索引的建立。 二、 解决思路与根据 1. 建立...
在数据库管理中,数据表是一种组织数据的方式,它由行和列组成,类似于电子表格。每个列都有一个特定的名称,称为字段或属性,每行代表一个单独的记录。在全球城市数据表中,可能包含的字段有城市名称、国家、人口、...
在创建多列索引时,应考虑索引列的选取和顺序。如果新索引是现有多列索引的最左前缀,那么就没有必要单独为前面的列创建索引,因为这不会提供额外的性能提升。 举例来说,如果我们有一个名为`people`的表,包含`...
在 MySQL 中,当单表中的数据达到千万级别时,数据的分页查询结果时间可能会变得很长。为解决这个问题,我们需要采取相应的优化措施,以达到最短的时间。 建立索引 建立索引是优化 MySQL 查询性能的一种重要方法。...
8. **子表和子子表的外键索引**:如`i_表名_fghi`和`i_表名_fgbi`,这些索引增强了多表查询的性能,特别是当主从关系的数据需要联查时。 此外,还提到了三个具体的采购业务表格及其对应的索引: - **物资需求申请...
* 单列索引和多列索引 * 一般索引和复合索引 索引优化 索引优化是数据库性能优化的关键部分。索引优化可以提高查询性能,减少磁盘I/O,并提高数据库的整体性能。索引优化需要考虑以下几点: * 索引的选择:选择...
- **唯一索引(UNIQUE)**:确保索引列中的每个值都是唯一的,不允许有重复。 - **主键索引(PRIMARY KEY)**:一个表只能有一个主键,它既是唯一索引也是非空索引。 - **普通索引(INDEX)**:最基础的索引,...
单列索引,即一个索引只包合单个列,一个表可以有多个单列索引,但这不是组合索引。组合索引,即一个索引包含多个列。 创建索引时,你需要确保该索引是应用在SQL查询语的条件(一般作为WHERE 子句的条件)实际上,索引...