sql查询like和charindex和substring比较性能测试
300万条记录 like 和 charindex 函数以及substring函数性能比较:
数据量:300万
机器环境
P4 3.0双核 2G内存
1. 执行语句
表结构:
USE [Test] GO /****** 对象: Table [dbo].[TabTest] 脚本日期: 03/22/2011 09:46:20 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[TabTest]( [id] [int] IDENTITY(1,1) NOT NULL, [ypmc] [nvarchar](50) NULL, [ypdm] [nvarchar](50) NULL, [cdmc] [nvarchar](50) NULL, [cddm] [nvarchar](50) NULL, [gg] [nvarchar](50) NULL, [list] [nvarchar](50) NULL, [doc1] [nvarchar](50) NULL, [ywuserid] [int] NULL, [flag] [tinyint] NULL, [flagstr] [nchar](10) NULL ) ON [PRIMARY]
/*仅list字段建聚集索引*/
select * from TabTest where list like '%a%' and ywuserid=10215
select * from TabTest where charindex('a',list)>0 and ywuserid=10215
select * from TabTest where substring(list ,1,1) = 'a' and ywuserid=10215
/*仅list字段建非聚集索引*/
select * from TabTest where list like '%a%' and ywuserid=10215
select * from TabTest where charindex('a',list)>0 and ywuserid=10215
select * from TabTest where substring(list ,1,1) = 'a' and ywuserid=10215
/*list字段不建索引*/
select * from TabTest where list like '%a%' and ywuserid=10215
select * from TabTest where charindex('a',list)>0 and ywuserid=10215
select * from TabTest where substring(list ,1,1) = 'a' and ywuserid=10215
/*查询字段和list建索引*/
select * from TabTest where list like '%a%' and ywuserid=10215
select * from TabTest where charindex('a',list)>0 and ywuserid=10215
select * from TabTest where substring(list ,1,1) = 'a' and ywuserid=10215
/*全部字段和list建索引*/
select * from TabTest where list like '%a%' and ywuserid=10215
select * from TabTest where charindex('a',list)>0 and ywuserid=10215
select * from TabTest where substring(list ,1,1) = 'a' and ywuserid=10215
仅list字段建聚集索引性能分析:
仅list字段建非聚集索引性能分析:
字段不建索引性能分析:
看到上面结果后:
试了一下如下查询:
/*查询300万条*/
/*仅list字段建聚集索引*/
select * from TabTest where list like '%a%'
select * from TabTest where charindex('a',list)>0
select * from TabTest where substring(list ,1,1) = 'a'
/*仅list字段建非聚集索引*/
select * from TabTest where list like '%a%'
select * from TabTest where charindex('a',list)>0
select * from TabTest where substring(list ,1,1) = 'a'
/*list字段不建索引*/
select * from TabTest where list like '%a%'
select * from TabTest where charindex('a',list)>0
select * from TabTest where substring(list ,1,1) = 'a'
/*list字段不建索引*/
/*仅list字段建非聚集索引*/
/*仅list字段建聚集索引*/
自己看看性能比较结果吧!
作者: Leo_wl
出处: http://HdhCmsTestcnblogs测试数据/Leo_wl/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
版权信息查看更多关于sql查询like和charindex和substring比较性能测试的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did50836