IT猫扑网:您身边最放心的安全下载站! 最新更新| 软件分类| 专题汇总| 手机版

您当前所在位置:IT猫扑网 > 数据库 > MSSQL > 教你快速掌握数据库查询优化的实用技巧

教你快速掌握数据库查询优化的实用技巧

时间:2015-06-28 00:00 来源:IT猫扑网|http://www.itmop.com/ 作者:网管联盟 我要评论(0)

数据库查询优化的实用技巧:

本文中,abigale代表查询字符串,ada代表数据表名,alice代表字段名。

技巧一:

问题类型:ACCESS数据库字段中含有日文片假名或其它不明字符时查询会提示内存溢出。

解决方法:修改查询语句

以下为引用的内容:
sql=&select * from ada where alice like '%&&abigale&&%'&
改为
sql=&select * from ada&
rs.filter = &alice like '%&&abigale&&%'&

技巧二:

问题类型:如何用简易的办法实现类似百度的多关键词查询(多关键词用空格或其它符号间隔)。

解决方法:

以下为引用的内容:

'//用空格分割查询字符串
ck=split(abigale,& &)
'//得到分割后的数量
sck=UBound(ck)

sql=&select * ada where&

在一个字段中查询
For i = 0 To sck
SQL = SQL & tempJoinWord & &(& & _
&alice like '&&ck(i)&&%')&
tempJoinWord = & and &
Next

在二个字段中同时查询
 

以下为引用的内容:

For i = 0 To sck
SQL = SQL & tempJoinWord & &(& & _
&alice like '&&ck(i)&&%' or & & _
&alice1 like '&&ck(i)&&%')&
tempJoinabigale = & and &
Next


技巧三:提高查询效率的几种技巧

1. 尽量不要使用 or,使用or会引起全表扫描,将大大降低查询效率。

2. 经过实践验证,charindex()并不比前面加%的like更能提高查询效率,并且charindex()会使索引失去作用(指sqlserver数据库)

3. alice like '%&&abigale&&%' 会使索引不起作用

like '&&abigale&&%' 会使索引起作用(去掉前面的%符号)

(指sqlserver数据库)

4. '%&&abigale&&%' 与'&&abigale&&%' 在查询时的区别:

比如你的字段内容为:斯卡布罗集市

'%&&abigale&&%' :会通配所有字符串,不论查&集市&还是查&斯卡&,都会显示结果。

'&&abigale&&%' :只通配前面的字符串,例如查&集市&是没有结果的,只有查&斯卡&,才会显示结果。

5. 字段提取要按照&需多少、提多少&的原则,避免&select *&,尽量使用&select 字段1,字段2,字段3........&。实践证明:每少提取一个字段,数据的提取速度就会有相应的提升。提升的速度还要看您舍弃的字段的大小来判断。

6. order by按聚集索引列排序效率最高。一个sqlserver数据表只能建立一个聚集索引,一般默认为ID,也可以改为其它的字段。

7. 为你的表建立适当的索引,建立索引可以使你的查询速度提高几十几百倍。(指sqlserver数据库)

以下是建立索引与不建立索引的一个查询效率分析:

Sqlserver索引与查询效率分析。

表 News

字段

Id:自动编号

Title:文章标题

Author:作者

Content:内容

Star:优先级

Addtime:时间

记录:100万条

测试机器:P4 2.8/1G内存/IDE硬盘

方案1:

主键Id,默认为聚集索引,不建立其它非聚集索引

以下为引用的内容:
select * from News where Title like '%&&abigale&&%'
or Author like '%&&abigale&&%' order by Id desc

从字段Title和Author中模糊检索,按Id排序

查询时间:50秒

方案2:

主键Id,默认为聚集索引

在Title、Author、Star上建立非聚集索引

以下为引用的内容:

select * from News where Title like '&&abigale&&%'
or Author like '&&abigale&&%' order by Id desc

从字段Title和Author中模糊检索,按Id排序

查询时间:2 - 2.5秒

方案3:

主键Id,默认为聚集索引

在Title、Author、Star上建立非聚集索引

select * from News where Title like '&&abigale&&%'
or Author like '&&abigale&&%' order by Star desc
 
从字段Title和Author中模糊检索,按Star排序

查询时间:2 秒

方案4:

主键Id,默认为聚集索引

在Title、Author、Star上建立非聚集索引
select * from News where Title like '&&abigale&&%' or Author like '&&abigale&&%'
 
从字段Title和Author中模糊检索,不排序查询时间:1.8 - 2 秒

方案5:

主键Id,默认为聚集索引

在Title、Author、Star上建立非聚集索引

select * from News where Title like '&&abigale&&%'

select * from News where Author like '&&abigale&&%'
 
从字段Title 或 Author中检索,不排序查询时间:1秒

关键词标签:优化,查询,数据库,掌握

相关阅读 sql server系统表损坏的解决方法 SQL Server asp.net 数据提供程序连接池 SqlServer2005对现有数据进行分区具体步骤 一个Access数据库数据传递的实例方法 为导入文件加上时间戳标记的两种方法 SQL Server 2005 在不允许远程连接的情况下的破解

文章评论
发表评论

热门文章 sql server系统表损坏的解决方法 sql server系统表损坏的解决方法 SqlServer2005对现有数据进行分区具体步骤 SqlServer2005对现有数据进行分区具体步骤 解决SQL Server中Group无法实现的问题 解决SQL Server中Group无法实现的问题 SQL Server 2005降级到2000的正确操作步骤 SQL Server 2005降级到2000的正确操作步骤 手把手教你学会SQL Server镜像操作 手把手教你学会SQL Server镜像操作 实战手记:让百万级数据瞬间导入SQL Server 实战手记:让百万级数据瞬间导入SQL Server

相关下载

人气排行 配置和注册ODBC数据源-odbc数据源配置教程 如何远程备份(还原)SQL2000数据库 SQL2000数据库远程导入(导出)数据 SQL2000和SQL2005数据库服务端口查看或修改 修改Sql Server唯一约束教程 SQL Server 2005降级到2000的正确操作步骤 sql server系统表损坏的解决方法 浅谈JSP JDBC来连接SQL Server 2005的方法 SQL Server创建表语句介绍 MS-SQL2005服务器登录名、角色、数据库用户、角色、架构的关系 如何使用SQL Server中的客户端配置工具 SQL Server 分布式查询:OLE DB连接(一)