热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

sqlserver性能优化呼叫中心来电归属地查询

数据21万多,对【CHARINDEX和SUBSTRING】和【In和Or】在是否有索引的条件下的检测和比较。1.CHARINDEXSELECTaddressFROMPhoneTo

数据21万多,对【CHARINDEX和SUBSTRING】和【In和Or】在是否有索引的条件下的检测和比较。


1. CHARINDEX
SELECT addressFROM PhoneToAddressInfo WHERE (CHARINDEX(Phone, '15201956983') = 1)
不创建索引:表 'PhoneToAddressInfo'。扫描计数 1,逻辑读 942 次,物理读 0 次,预读 0 次。CPU 时间 = 650 毫秒,耗费时间 = 650 毫秒。
创建索引:表 'PhoneToAddressInfo'。扫描计数 1,逻辑读 955 次,物理读 0 次,预读 0 次。CPU 时间 = 734 毫秒,耗费时间 = 736 毫秒。

结论:CHARINDEX查询的列创建索引没有实际的意义,因为CHARINDEX不走索引和like’%---‘相似。

2.SUBSTRING
SELECT Address FROM PhoneToAddressInfo WHERE phone=SUBSTRING('15201956983',1,7)
不创建索引:表 'PhoneToAddressInfo'。扫描计数 1,逻辑读 942 次,物理读 0 次,预读 0 次。CPU 时间 = 75 毫秒,耗费时间 = 75 毫秒
创建索引:表 'PhoneToAddressInfo'。扫描计数 1,逻辑读 3 次,物理读 0 次,预读 0 次。CPU 时间 = 0 毫秒,耗费时间 = 0 毫秒。

结论:SUBSTRING查询的列创建索引在查询时有着本质的提高,合理使用提高查询性能。

3.IN
'PhoneToAddressInfo'。扫描计数 3,逻辑读 10 次,物理读 0 次,预读 0 次。CPU 时间 = 0 毫秒,耗费时间 = 0 毫秒。
SELECT Address FROM PhoneToAddressInfo WHERE phone in (SUBSTRING('15201956983',1,7),SUBSTRING('18926175999',1,7),SUBSTRING('13150105555',1,7))



4.OR
表 'PhoneToAddressInfo'。扫描计数 3,逻辑读 10 次,物理读 0 次,预读 0 次。CPU 时间 = 0 毫秒,耗费时间 = 0 毫秒。
SELECT Address FROM PhoneToAddressInfo WHERE phone=SUBSTRING('15201956983',1,7) or phone=SUBSTRING('18926175999',1,7) or phone=SUBSTRING('13150105555',1,7)


结论: or和in的效率几乎一样
1、当IN(条件列表) 中的条件列表是少量值时,它会解释成OR连接,即最后编译成和OR连接一模一样的语句;
2、当IN(条件列表) 中的条件列表很长时,或者你使用OR方法来连接条件并且连接数量很多时,则它们最后的解释效果也是一样的,即都是把条件列表创建为一个哈希表,然后和被查询的表中的行进行对比



推荐阅读
  • Java String与StringBuffer的区别及其应用场景
    本文主要介绍了Java中String和StringBuffer的区别,String是不可变的,而StringBuffer是可变的。StringBuffer在进行字符串处理时不生成新的对象,内存使用上要优于String类。因此,在需要频繁对字符串进行修改的情况下,使用StringBuffer更加适合。同时,文章还介绍了String和StringBuffer的应用场景。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 本文详细介绍了如何使用MySQL来显示SQL语句的执行时间,并通过MySQL Query Profiler获取CPU和内存使用量以及系统锁和表锁的时间。同时介绍了效能分析的三种方法:瓶颈分析、工作负载分析和基于比率的分析。 ... [详细]
  • 本文介绍了解决Netty拆包粘包问题的一种方法——使用特殊结束符。在通讯过程中,客户端和服务器协商定义一个特殊的分隔符号,只要没有发送分隔符号,就代表一条数据没有结束。文章还提供了服务端的示例代码。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • C++字符字符串处理及字符集编码方案
    本文介绍了C++中字符字符串处理的问题,并详细解释了字符集编码方案,包括UNICODE、Windows apps采用的UTF-16编码、ASCII、SBCS和DBCS编码方案。同时说明了ANSI C标准和Windows中的字符/字符串数据类型实现。文章还提到了在编译时需要定义UNICODE宏以支持unicode编码,否则将使用windows code page编译。最后,给出了相关的头文件和数据类型定义。 ... [详细]
  • Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOMEbinjava–option来启 ... [详细]
  • 本文介绍了如何使用Power Design(PD)和SQL Server进行数据库反向工程的方法。通过创建数据源、选择要反向工程的数据表,PD可以生成物理模型,进而生成所需的概念模型。该方法适用于SQL Server数据库,对于其他数据库是否适用尚不确定。详细步骤和操作说明可参考本文内容。 ... [详细]
  • C语言注释工具及快捷键,删除C语言注释工具的实现思路
    本文介绍了C语言中注释的两种方式以及注释的作用,提供了删除C语言注释的工具实现思路,并分享了C语言中注释的快捷键操作方法。 ... [详细]
  • 本文介绍了C函数ispunct()的用法及示例代码。ispunct()函数用于检查传递的字符是否是标点符号,如果是标点符号则返回非零值,否则返回零。示例代码演示了如何使用ispunct()函数来判断字符是否为标点符号。 ... [详细]
  • 开发笔记:select from具体执行相关知识介绍及案例分析
    本文由编程笔记小编整理,主要介绍了select from具体执行相关的知识,包括数据插入、查询最小rowID、查询每个重复名字的最小rowID、删除重复数据等操作,并提供了案例分析。希望对读者有一定的参考价值。 ... [详细]
  • 本文介绍了游标的使用方法,并以一个水果供应商数据库为例进行了说明。首先创建了一个名为fruits的表,包含了水果的id、供应商id、名称和价格等字段。然后使用游标查询了水果的名称和价格,并将结果输出。最后对游标进行了关闭操作。通过本文可以了解到游标在数据库操作中的应用。 ... [详细]
author-avatar
唤起
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有