sqlserver的like '%xxx%'优化,全文索引
2000万行的数据表,首先对Address字段做'%xxx%'模糊查询
这是估计的查询计划

这是估计的实际查询结果,用了37秒才查询完成

还是之前的数据,但是这一次使用'xxx%'来做查询,现在还没有做索引

查询速度为10秒,依然是做了全表扫描

接下来的这个不是模糊查询,直接的=,查询多了一个步骤“并行度”

三秒钟完成查询,也是很慢的,应该都是走了全表扫描

现在为Address字段建立一个普通索引

建好普通索引之后尝试进行'%xxx%'查找,从查询计划来看,'%xxx%'是无法利用到普通索引的

果然,查询耗时和没有建立索引之前一样,基本没变

现在尝试查询'xxx%',根据查询计划可以看到,这种查询可以走刚刚我们建立的普通索引

查询结果为4秒,之前没有建立索引的时候查询结果为10秒,缩小了一倍

接着,直接=查找,可以看出利用了索引

查询耗时0秒,降到了毫秒级别,从这点可以看出,普通的非聚集索引对于直接匹配(=)查询的支持是最好的,然后是like 'xxxx%',而like '%xxx%'不支持

然后我们在Address字段上建立一个全文索引

下面是全文索引的使用语法,以及查询过程

全文索引添加之后,查询时间为2秒,还是有点慢,后来测试了几次,一般是在一秒左右

另外SQLServer2008的全文索引貌似不会立马建立完成,而是需要在后台等待一段时间才能完全建立,在这段时间里面查询返回的结果是不一样的。
如下图,两次查询后一次的结果比前一次多,全文索引正在建立中,最后会有一个稳定的状态。


sqlserver的like '%xxx%'优化,全文索引的更多相关文章
- 第十七章——配置SQLServer(4)——优化SQLServer实例的配置
原文:第十七章--配置SQLServer(4)--优化SQLServer实例的配置 前言: Sp_configure 可以用于管理和优化SQLServer资源,而且绝大部分配置都可以使用SQLServ ...
- 关于SQLSERVER的全文目录跟全文索引的区别
很久没有写随笔了,本来之前想写一篇关于SQLSERVER全文索引的随笔,可惜没有时间,一直拖到现在才有时间写,不好意思让各位久等了~ 先介绍一下SQLSERVER中的存储类对象,哈哈,先介绍一下概念嘛 ...
- SQLServer地址搜索性能优化例子
这是一个很久以前的例子,现在在整理资料时无意发现,就拿出来再改写分享. 1.需求 1.1 基本需求: 根据输入的地址关键字,搜索出完整的地址路径,耗时要控制在几十毫秒内. 1.2 数据库地址表结构和数 ...
- SqlServer性能检测和优化工具使用详细
工具概要 如果你的数据库应用系统中,存在有大量表,视图,索引,触发器,函数,存储过程,sql语句等等,又性能低下,而苦逼的你又要对其优化,那么你该怎么办?哥教你,首先你要知道问题出在哪里?如果想知道问 ...
- SqlServer性能检测和优化工具使用详细(转)
转载链接:http://www.cnblogs.com/knowledgesea/p/3683505.html 工具概要 如果你的数据库应用系统中,存在有大量表,视图,索引,触发器,函数,存储过程,s ...
- SQLSERVER数据库死锁与优化杂谈
死锁杂谈 当数据库死锁时,SqlServer会释放一个优先级较低的锁,让另一个事务运行:所以,即时去捕捉数据库死锁,是挺不容易的. 如果,数据库死锁比较长时间,那么死锁是可以被捕捉的. 可以用SqlS ...
- 试试SQLServer 2014的内存优化表
SQL Server2014存储引擎:行存储引擎,列存储引擎,内存引擎 SQL Server 2014中的内存引擎(代号为Hekaton)将OLTP提升到了新的高度. 现在,存储引擎已整合进当前的数据 ...
- 试试SQLServer 2014的内存优化表(转载)
SQL Server2014存储引擎:行存储引擎,列存储引擎,内存引擎 SQL Server 2014中的内存引擎(代号为Hekaton)将OLTP提升到了新的高度. 现在,存储引擎已整合进当前的数据 ...
- sqlserver 构架与性能优化
太阳底下没有新鲜事 一.sqlserver 构架结构 1.查询优化器三阶段 1).找计划缓存如果找到直接使用 2).简单语句生成0开销的执行计划 3).正式优化 一般情况下优化到开销小于1.0就会停止 ...
随机推荐
- 异常:Keyword not supported: 'data source'的解决办法
将连接字符串中的"换为“'”,一个单引号即可. 详细解释:https://blogs.msdn.microsoft.com/rickandy/2008/12/09/explicit-c ...
- 有一个字典对象,d = {'a':1,'b':2},请用尽量简洁的代码将d转换成{1: 'a', 2: 'b'}
题目:有一个字典对象,d = {'a':1,'b':2},请用尽量简洁的代码将d转换成{1: 'a', 2: 'b'} 第一种方法: d = {'a': 1, 'b': 2}d = {value: k ...
- hive建表范例
建表范例:支持update和delete create table aaa( id string, visitor_name string ) clustered by(id) into bucket ...
- Sqoop使用,mysql,hbase,hive等相互转换
Sqoop 是一款用来在不同数据存储软件之间进行数据传输的开源软件,它支持多种类型的数据储存软件. 安装 Sqoop 1.下载sqoop并加mysql驱动包 http://mirror.bit.edu ...
- The connection string 'MysqlEF' in the application's configuration file does not contain the require异常
在学习EF core first 对接mysql时,出现了这个异常. 原因是:连接字符串中缺少providerName="MySql.Data.MySqlClient" <a ...
- mongodb实现自增的方法
前面操作看菜鸟教程 function getNextSequenceValue(sequenceName){ var sequenceDocument = Counter.findOneAndUpda ...
- 清北合肥day1
题目: 1.给出一个由0,1组成的环 求最少多少次交换(任意两个位置)使得0,1靠在一起 n<=1000 2.两个数列,支持在第一个数列上区间+1,-1 每次花费为1 求a变成b的最小代价 n& ...
- [转]docker安装elk
来源 https://www.jianshu.com/p/f549017c4b60 问题:virtual memory areas vm.max_map_count [65530] likely ...
- Azure附加新磁盘,差点掉进去的那个坑,注意临时数据盘
接今早的mysql问题,最终原因是mysql数据库的数据库文件以及pid丢失,当我还纳闷为什么丢失的情况下 我研究了下Azure云平台的数据磁盘原理,在Azure下,新建vm(centos)后只会提供 ...
- net core体系-web应用程序-4asp.net core2.0 项目实战(1)-6项目缓冲方案
Asp.Net Core2.0下使用memcached缓存. Memcached目前微软暂未支持,暂只支持Redis,由于项目历史原因,先用博客园开源项目EnyimMemcachedCore,后续用到 ...