Sql server 优化SQL Server查询
是否可以优化此查询Sql server 优化SQL Server查询,sql-server,Sql Server,是否可以优化此查询 SELECT tr.transferfrom, tr.transferto, br.id as 'BR_ID',tr.refno, br.name as 'BR_NAME', br.code as 'BRANCH_CODE', tr.docno, tr.transdate, stk.stockno,stk.salescat,tr.qty, tr.sprice,tr.qty*tr.sprice as 'GROSS_SALES' FROM
SELECT
tr.transferfrom, tr.transferto, br.id as 'BR_ID',tr.refno,
br.name as 'BR_NAME', br.code as 'BRANCH_CODE', tr.docno, tr.transdate,
stk.stockno,stk.salescat,tr.qty, tr.sprice,tr.qty*tr.sprice as 'GROSS_SALES'
FROM
TRANSFER tr
JOIN
branch br on tr.branchid = br.id
JOIN
stocks stk on tr.stockid=stk.id
WHERE
RIGHT(tr.refno,7) = 'ST00576' AND LEFT(tr.refno,2) = 89
AND stk.stockno = 'NS4370 CR - L';
tr.refno
创建索引,并将LEFT(tr.refno,2)=89
替换为tr.refno,如“89%”
stk.id+stk.stockno
br.id
tr.refno
字符存储在单独的字段中可能是有意义的,以避免RIGHT(tr.refno,7)='ST00576'
(不确定sql server是否支持反向索引)tr.refno
创建索引,并将LEFT(tr.refno,2)=89
替换为tr.refno,如“89%”
stk.id+stk.stockno
br.id
tr.refno
字符存储在单独的字段中可能是有意义的,以避免RIGHT(tr.refno,7)='ST00576'
(不确定sql server是否支持反向索引)第4点毫无意义-改为在右侧设置索引(tr.refno,7)。您将如何做到这一点?@TomTom:基于单个函数的索引有何帮助?如果我们分开了列-我们可以创建
right\u part\u column+refno
复合索引。谢谢你的建议,但我对SQL server索引的了解非常有限。@redcoder:到底什么还不清楚?第4点没有意义-改为在右侧设置索引(tr.refno,7)。你会怎么做,是吗?@TomTom:那么基于单个函数的索引会有什么帮助呢?如果我们有单独的列-我们可以创建right\u part\u column+refno
复合索引。谢谢你的建议,但我对SQL server索引的知识非常有限。@redcoder:到底什么还不清楚?