关于优化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的都会被查出