like 语句的更换 ( 积分: 100 )

  • 主题发起人 主题发起人 bigness
  • 开始时间 开始时间
B

bigness

Unregistered / Unconfirmed
GUEST, unregistred user!
SELECT&nbsp;Product_1.Sys_id&nbsp;as&nbsp;ProductId,&nbsp;&nbsp;a.Stockid,&nbsp;SUM(a.P_Number)&nbsp;AS&nbsp;p_Number,&nbsp;SUM(a.P1_Number)&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AS&nbsp;P1_Number,&nbsp;convert(numeric(20,6)&nbsp;,case&nbsp;when&nbsp;SUM(a.P_Number)&nbsp;&lt;&gt;&nbsp;0&nbsp;then&nbsp;SUM(a.P_total)&nbsp;/&nbsp;SUM(a.P_Number)&nbsp;&nbsp;else&nbsp;0&nbsp;end)&nbsp;&nbsp;AS&nbsp;P_price,&nbsp;SUM(a.P_total)&nbsp;AS&nbsp;P_total<br>FROM&nbsp;dbo.Product&nbsp;Product_1&nbsp;CROSS&nbsp;JOIN<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(SELECT&nbsp;Product&nbsp;.Sys_id,&nbsp;Product&nbsp;.u_Code,&nbsp;Product&nbsp;.Sys_ParentId,&nbsp;Sys_Fullid,&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Stockid,&nbsp;SUM(StorStatus.P1_Number)&nbsp;AS&nbsp;P1_Number,&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SUM(StorStatus.P_Number)&nbsp;AS&nbsp;P_Number,&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SUM(P_Total)&nbsp;P_total<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FROM&nbsp;StorStatus&nbsp;INNER&nbsp;JOIN<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Product&nbsp;ON&nbsp;StorStatus.ProdID&nbsp;=&nbsp;Product&nbsp;.Sys_id<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GROUP&nbsp;BY&nbsp;ProDuct&nbsp;.Sys_id,&nbsp;Product&nbsp;.u_Code,&nbsp;Product&nbsp;.Sys_ParentId,&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Product&nbsp;.Sys_Fullid,&nbsp;Stockid)&nbsp;a<br>WHERE&nbsp;(a.Sys_Fullid&nbsp;like&nbsp;Product_1.Sys_Fullid&nbsp;+&nbsp;'%'&nbsp;)-----这句怎么样更换查才能提高效率,而查询的效果一样
 
那为大虾进来看下
 
试试改为where&nbsp;charindex(a.sys_fullid,&nbsp;product_1.sys_fullid)&nbsp;=&nbsp;1
 
不行这个charindx函数用了基本差不多
 
如果a.Sys_Fullid字段长度是固定的,给个建议,增加一个字段,将Product_1.Sys_Fullid&nbsp;截取存到该字段里,另外给这个字段增加索引,用等于来进行判断而不是Like,甚至如果Sys_Fullid都是几个固定值,可以用一个代码表来存放这个固定值,因为字符型和数字型的效率差别很大,&nbsp;用代码表的方式可以将文字转化成数字型存放。<br>注意索引,一个好索引能提高查询效率几十倍
 
where&nbsp;LEFT(product_1.sys_fullid,LEN(a.sys_fullid))=a.sys_fullid
 
谢谢楼上三位的建议,
 
后退
顶部