sqlserver 查询语句优化
发布网友
发布时间:2022-04-08 09:00
我来回答
共8个回答
热心网友
时间:2022-04-08 10:29
你后面这些条件都错误:
( cc.business='INSPECTION' and bil.customer_name like '%' + cl.client_name + '%' or
cc.business='INSPECTION' and bil.header_dff_value12 like '%' + cl.client_name + '%' or
cc.business='INSPECTION' and bil.header_dff_value13 like '%' + cl.client_name + '%' or
cc.business='INSPECTION' and bil.ship_to_party_name like '%' + cl.client_name + '%' or
cc.business='INSPECTION' and bil.header_dff_value6 like '%' + cl.client_name + '%' or
cc.business='AUDIT' and bil.customer_name like '%' + cl.client_name + '%' or
cc.business='AUDIT' and bil.header_dff_value13 like '%' + cl.client_name + '%' or
cc.business='AUDIT' and bil.ship_to_party_name like '%' + cl.client_name + '%' or
cc.business='AUDIT' and bil.header_dff_value6 like '%' + cl.client_name + '%' or
cc.business='TESTING' and bil.customer_name like '%' + cl.client_name + '%' or
cc.business='TESTING' and bil.header_dff_value12 like '%' + cl.client_name + '%' or
cc.business='TESTING' and bil.ship_to_party_name like '%' + cl.client_name + '%' )
你这样的条件查出来的结果应该是不对的
再这,我认为你那块条件可以不需要,你再上面已经处理过,下面还有意义吗?
热心网友
时间:2022-04-08 11:47
LIKE '%关键字%' 的, 实在没办法用索引。
而且 还是 LEFT JOIN ON 里面的条件 是 这样。
我来做个标记,学习学习。
热心网友
时间:2022-04-08 13:22
一般是传入的数据比数据库里面定义字段最大长度大造成的。
比如说一个字段定义成nvarchar(50),你传入100个中文字的到那个字段,他就会报这个错。
如果对您有帮助,请记得采纳为满意答案,谢谢!祝您生活愉快!
vaela
热心网友
时间:2022-04-08 15:13
优化是个综合工程。我看了以上各位的回答,基本上是隔靴搔痒。并没有给出实质性的处理问题方案。似乎一遇到性能问题,就是加索引。索引不是万能的,索引是双刃剑,建的不当同样影响查询性能。所以,什么时候需要建索引,在什么字段上建索引,建什么类型的索引,都是值得仔细考虑的问题。
你这个查询,涉及的就是3张表,为何语句搞的这么复杂?原因就是表设计的不好,不合理。所有的数据库设计都是一环扣一环设计下来,围绕一个核心:业务逻辑,只有把业务逻辑分析透彻了,才能设计出合理的数据表。关系数据库就是这样,让你把一个实体按照范式分解,存储在数据表中。
那么我的建议就是,自己分析业务逻辑,看看是否考虑可以重新设计表,从本质上解决问题。再一个,用存储过程封装语句,也可以提高性能。而且,可以利用临时表来提高性能。
不知,是否赞同我的看法。
热心网友
时间:2022-04-08 17:21
看着太乱了,实在解决不了了,发给我个表结构,把功能描述一下我重新给你写一下。
热心网友
时间:2022-04-08 19:46
重写搜索算法,建议通过加权算法实现。
热心网友
时间:2022-04-08 22:27
我勒个去啊
好长啊
热心网友
时间:2022-04-09 01:25
建议left join部分的那个表 加几个索引