日期:2014-05-18  浏览次数:20482 次

关于优化SQL
没有必要在动态SQL里写食物,如果要写写在外面如:begin   tran   exec(@s)   commit   trans   或者将动态SQL写成函数或者存储过程.

如何理解这句话呢?

还有:
如果是使用like进行查询的话,简单的使用index是不可以的,但是全文索引耗空间.
like   'a% '   使用索引   like   '%a '   不使用索引引用   like   '%a% '   查询时,查询时间和字段值总长度成正比,所以不能用char类型,而是varchar.

怎么理解?

是推荐用   like   'a% '   和   like   '%a '   不推荐   like   '%a% '   是么?

谢谢~

------解决方案--------------------
1、
没有必要在动态SQL里写食物,如果要写写在外面如:begin tran exec(@s) commit trans 或者将动态SQL写成函数或者存储过程.

如何理解这句话呢?
-----------------------------
你的这句exec(@s)是放到事务中去执行的
或者写成存储过程...
是不是搞错了,动态语句Exec(@s)不能在函数中执行的

2、
char类型:固定长度的非unicode
varchar类型:可变长度的非unicode

是推荐用 like 'a% ' 和 like '%a ' 不推荐 like '%a% ' 是么?
like 'a% ' :查询以a字母开头的所有字符,如:a1 , axffgdfg , aa8980 等
like '%a ' :查询以a字母结尾的所有字符,如:1234a ,ffgdfga ,8980a 等
like '%a% ' :只要包含a的都会被查出