测试
|
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)
|
(单列)索引比(多列)索引在查询数据花费时间要短很多,主要表现在(单列)索引用的是索引查找,(多列)索引用的是索引扫描
|
相关推荐
主要讨论MySQL选择索引时单列单列索引和多列索引使用,以及多列索引的最左前缀原则,需要的朋友可以参考下
C语言实现的词索引表程序:IndexBook。C语言实现按照索引插入并查找元素。严蔚敏建立词索引表:严蔚敏数据结构C语言实现,串操作应用举例中的词索引表例子,由于作者没给出完整源码,自己写了一个比较完整的。
oracle 全文检索 oracle全文索引 多列字段检索,匹配多列字段搜索功能。
[Oracle]在亿级记录表中创建索引 [Oracle]如何在亿级记录表中创建索引 [Oracle]如何在亿级记录表中创建索引
Oracle在线建立超大表的索引,为在线生产系统某核心大表建立索引
索引类型-说明 索引文件有数据文件和索引表文件组成。 索引表中存放记录的关键字和记录在文件中的位置。 多级索引。
MyISAM引擎与InnoDB引擎性能的对比
查询索引对应的表和列,介绍了两种方法,可供使用。
sql学习 组合索引需考虑单列索引.sql
单列索引,即一个索引只包合单个列,一个表可以有多个单列索引,但这不是组合索引。组合索引,即一个索引包含多个列。 创建索引时,你需要确保该索引是应用在SQL查询语的条件(一般作为WHERE 子句的条件)实际上,索引...
索引的数据结构 索引的数据结构 1、什么是索引 在关系型数据库中,索引是⼀种单独的、物理的对数据库表中⼀列或多列的值进⾏排序的⼀种存储结构,它是某个表中⼀列或若⼲列值的集 合和相应的指向表中物理标识这些值...
对XML数据建立有效的索引,是左右XML数据处理性能的重要因素.深入地讨论了目前XML索引 技术的研究现状,将XML索引技术分为两大类:节点记录类索引(本身还可以分为3个小的类型)和结构摘要类 索引.根据XML数据查询...
分析大型系统源代码中包含的SQL语句,解析这些SQL语句访问的数据表和条件表达式,连接数据库,探测对应的数据表包含的记录个数和参与条件过滤的字段的有效值个数,为数据表构建索引策略提供,并自动生成索引创建脚本...
多列索引的顺序问题:如果查询中的条件和多列索引的顺序不匹配,MySQL可能无法使用索引。多列索引按照定义的顺序进行匹配,如果查询不是按照相同的顺序来进进行查询,索引将无法有效使用。 查询范围过大:如果查询...
主键列和被对比列均为二维列表,列的索引从0开始,如A列对应0,B列对应1。 主键列[[1, 2], [3, 4]]的含义为,1为对比文件中第一列,2为被对比文件的第二列;3为对比文件中第三列,4为被对比文件的第四列。 主键列...
SQL Server缺省情况下建立的索引是非聚簇索引,由于非聚簇索引不重新组织表中的数据,而是对每一行存储索引列值并用一个指针指向数据所在的页面。换句话 说非聚簇索引具有在索引结构和数据本身之间的一个额外级。
MS SQL Server:分区表、分区索引 详解 1. 分区表简介 使用分区表的主要目的,是为了改善大型表以及具有各种访问模式的表的可伸缩性和可管理性。 大型表:数据量巨大的表。 访问模式:因目的不同,需访问的...
数据结构中索引顺序表查找,将一些数据分别存放在不同的链表里,每一个链表都有一个头指针作为索引,储存一段数据的最大值或者最小值。查找时先查找到对应的索引,即可较快的找到目标数据。
MySql练习4:创建学生表和成绩表索引并查看索引.zip MySql练习4:创建学生表和成绩表索引并查看索引.zip MySql练习4:创建学生表和成绩表索引并查看索引.zip