SQLServer数据库查询优化的常用方法总结
SQL Server数据库查询优化常用方法概述;
在本文中,abigale代表查询字符串,ada代表数据表名,alice代表字段名。
技能1:
类型:当ACCESS数据库字段包含日语片假名或其他未知字符时,查询将提示内存溢出。
解决方法:修改查询语句。
SQL = " select * from ada where Alice like ' % " & abigale & " ' "
代替
sql="select * from ada "
RS . filter = " Alice like“%”& abigale &“%”"
技能二:
问题:如何用简单的方式实现类似百度的多关键词查询(多关键词之间用空格子或其他符号隔开)。
解决方法:
//用空格拆分查询字符串
ck=split(abigale," ")
//获取拆分数量
sck =欠载(ck)
sql="select * ada where "
字段中的查询
对于i = 0至sck
SQL = SQL & tempJoinWord & "(" & _
"爱丽丝喜欢' " &ck(i)& " ')"
tempJoinWord = " and "
然后
同时在两个字段中查询。
对于i = 0至sck
SQL = SQL & tempJoinWord & "(" & _
"爱丽丝喜欢" &ck(i)& " '或" & _
" alice1 like '"&ck(i)& " ')"
tempJoinabigale = " and "
技巧3:提高查询效率的几个技巧
1.尽量不要用或。使用or会造成全表扫描,大大降低查询效率。
2.实践证明,charindex()并不能比在前面加% like更能提高查询效率,而且charindex()会使索引变得无用(参考sqlserver数据库)
3.像“%”& Abigale &“%”这样的Alice会让索引没用。
像' " &abigale& " '将使索引工作(删除前面的%符号)
(指sqlserver数据库)
4.查询中“%”& Abigale &“%”和“”& Abigale &“%”之间的区别:
例如,您的字段显示:斯卡伯勒集市。
“%”& abigale &“%”:匹配所有字符串,无论“bazaar”或“ska”都显示结果。
& abigale &“%”:仅匹配前面的字符串。比如查“芭莎”,没有结果。只有查找“ska”才会显示结果。
5.字段选择应以“你需要多少,你就需要多少”为原则,避免“选择*”,使用“选择字段1、字段2、字段3”实践证明,每抽取一个字段,数据抽取速度就会相应提高。提升的速度取决于你丢弃的字段的大小。
6.按聚集索引列的排序效率排序。一个sqlserver数据表只能建立一个聚集索引,默认值为ID,也可以更改为其他字段。
7.为您的表建立一个合适的索引。建立索引可以将查询速度提高几十倍甚至几百倍。(指sqlserver数据库)
下面是索引和非索引之间的查询效率分析:
Sqlserver索引和查询效率分析。
餐桌新闻
领域
Id:自动编号
标题:文章的标题
作者:作者
内容:内容
星号:优先级
添加:时间
记录:一百万
测试机器:P4 2.8/1G内存/IDE硬盘
选项1:
主键Id,默认为聚集索引,不建立其他非聚集索引。
从标题为“%”& abigale &“%”的新闻中选择*
或者像“%”& abigale &“%”这样的作者,按Id desc排序
标题和作者字段的模糊检索,按Id排序
查询时间:50秒
选项2:
主键Id,默认为聚集索引
建立标题、作者和星号的非聚集索引
从标题为“&abigale&”的新闻中选择*
或者像“& abigale &“%”这样的作者按Id desc排序
标题和作者字段的模糊检索,按Id排序
查询时间:2-2.5秒
选项3:
主键Id,默认为聚集索引
建立标题、作者和星号的非聚集索引
从标题为“&abigale&”的新闻中选择*
或者像由明星desc排序' " &abigale& " '这样的作者
标题和作者字段的模糊检索,按星号排序
查询时间:2秒
选项4:
主键Id,默认为聚集索引
建立标题、作者和星号的非聚集索引
从标题为“& abigale &“%”或作者为“& abigale &“%”的新闻中选择*
标题和作者字段的模糊检索,无序查询时间:1.8-2秒
选项5:
主键Id,默认为聚集索引
建立标题、作者和星号的非聚集索引
从标题为“&abigale&”的新闻中选择*
或者
Select * from news,其中从字段Title或Author中检索Author like' "& Abigale &"% ",查询时间为1秒。
位律师回复
0条评论