仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1685|回复: 8
打印 上一主题 下一主题

[学习教程] MSSQL教程之最无效率的“多字段含混婚配关头字查询...

[复制链接]
简单生活 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:35:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
限制,如果WHERE子句的查询条件里有不等号(WHEREcoloum!=),MySQL将无法使用索引。类似地,如果WHERE子句的查询条件里使用了函数(WHEREDAY(column)=),MySQL也将无法使用索引。关头字|办理我们开辟数据库使用时,经常必要用到含混查询。假如统一个前提必要婚配良多字段怎样办呢?一般,程序员会每一个字段都在SQL中“fieldlike%cond%”一次。如许,SQL语句会长得惊人,碰上庞大一点的,乃至SQL语句会由于超长而被数据库回绝实行。

实在,这个成绩只需动动头脑就很简单办理:

起首,将要婚配不异前提的字段连起来(field1+field2+...)成一个长字符串;
然后再Like“%cond%”就能够了。

不外这类办法有个成绩,就是得衡量多表毗连酿成的效力下降。一样平常来讲,单表内字段一定应当毗连后再一致like判别;表间字段,则必要先过滤后,再实施这个战略。

接纳这个战略,不但能够延长SQL,并且可以无效地进步SQL的实行效力。

接待会见国际首家旅游比价搜刮网站:
搜纪行(http://www.soyoji.com)——搜刮,让旅游更轻松!MySQL是一个开放源码的小型关联式数据库管理系统,开发者为瑞典MySQLAB公司。目前MySQL被广泛地应用在Internet上的中小型网站中。
乐观 该用户已被删除
沙发
发表于 2015-1-17 15:43:46 | 只看该作者
一直以来个人感觉SQLServer的优化器要比Oracle的聪明。SQL2005的更是比2k聪明了不少。(有次作试验发现有的语句在200万级时还比50万级的相同语句要快show_text的一些提示没有找到解释。一直在奇怪。)
透明 该用户已被删除
板凳
发表于 2015-1-20 19:52:06 | 只看该作者
如果处理少量数据,比如几百条记录的数据,我不知道这两种情况哪个效率更高,如果处理大量数据呢?比如有表中有20万条记录.
分手快乐 该用户已被删除
地板
发表于 2015-1-29 18:52:26 来自手机 | 只看该作者
也可谈一下你是怎么优化存储过程的?
再现理想 该用户已被删除
5#
发表于 2015-2-6 03:17:56 | 只看该作者
这就引发了对varchar和char效率讨论的老问题。到底如何分配varchar的数据,是否会出现大规模的碎片?
莫相离 该用户已被删除
6#
发表于 2015-3-4 11:24:44 | 只看该作者
但是随着数据量的增大,这种成本差距会逐渐减小,趋于相等。(500万数量级只相差10%左右)
若天明 该用户已被删除
7#
发表于 2015-3-11 18:56:15 | 只看该作者
对一张百万级别的表建游标,同时又没有什么过滤条件,取得游标效率是如果直接SQL查询百万条数据;如果再对每条记录做处理,耗时将更长。
灵魂腐蚀 该用户已被删除
8#
发表于 2015-3-19 08:17:50 | 只看该作者
始终遗憾SQLServer的登陆无法分配CPU/内存占用等指标数。如果你的SQLServer给别人分配了一个只可以读几个表的权限,而这个家伙疯狂的死循环进行连接查询,会给你的系统带来很大的负担。
蒙在股里 该用户已被删除
9#
发表于 2015-3-27 15:40:34 | 只看该作者
varchar(max)\\\\nvarchar(max)类型的引入大大的提高了编程的效率,可以使用字符串函数对CLOB类型进行操作,这是一个亮点。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-4-19 18:05

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表