简单生活 发表于 2015-1-16 22:35:50

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

限制,如果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

也可谈一下你是怎么优化存储过程的?

再现理想 发表于 2015-2-6 03:17:56

这就引发了对varchar和char效率讨论的老问题。到底如何分配varchar的数据,是否会出现大规模的碎片?

莫相离 发表于 2015-3-4 11:24:44

但是随着数据量的增大,这种成本差距会逐渐减小,趋于相等。(500万数量级只相差10%左右)

若天明 发表于 2015-3-11 18:56:15

对一张百万级别的表建游标,同时又没有什么过滤条件,取得游标效率是如果直接SQL查询百万条数据;如果再对每条记录做处理,耗时将更长。

灵魂腐蚀 发表于 2015-3-19 08:17:50

始终遗憾SQLServer的登陆无法分配CPU/内存占用等指标数。如果你的SQLServer给别人分配了一个只可以读几个表的权限,而这个家伙疯狂的死循环进行连接查询,会给你的系统带来很大的负担。

蒙在股里 发表于 2015-3-27 15:40:34

varchar(max)\\\\nvarchar(max)类型的引入大大的提高了编程的效率,可以使用字符串函数对CLOB类型进行操作,这是一个亮点。
页: [1]
查看完整版本: MSSQL教程之最无效率的“多字段含混婚配关头字查询...