VS自動優化SQL語句邏輯與效率的疑問

2021-09-05 16:04:22 字數 1621 閱讀 7074

用vs2005時發現乙個問題,生成資料集時,vs會幫你自動優化語句,一般都不懷疑微軟的水平,不過這次優化之後實在是看不懂了,懷疑優化錯了,於是在查詢分析器裡試了一下,結果倒是對的,可是執行計畫裡卻顯示優化後的效率低一些,奇怪了

下面**裡前一行是我寫的,後一行是vs優化出來的(使用了sql server自帶的northwind資料庫):

declare

@shipname

varchar

declare

@shipcity

varchar

set@shipname=''

set@shipcity=''

select

dbo.orders.orderid, dbo.orders.orderdate, dbo.employees.firstname, 

dbo.customers.companyname

from

dbo.customers 

inner

join

dbo.orders 

ondbo.customers.customerid 

=dbo.orders.customerid 

inner

join

dbo.employees 

ondbo.orders.employeeid 

=dbo.employees.employeeid

where

(shipname 

=@shipname

or@shipname=''

) and

(shipcity 

=@shipcity

or@shipcity=''

) and

shipvia =2

select

orders.orderid, orders.orderdate, employees.firstname, 

customers.companyname

from

customers 

inner

join

orders 

oncustomers.customerid 

=orders.customerid 

inner

join

employees 

onorders.employeeid 

=employees.employeeid

where

(orders.shipname 

=@shipname

or@shipname=''

) and

(orders.shipcity 

=@shipcity

) and

(orders.shipvia =2

) or

(orders.shipname 

=@shipname

or@shipname=''

) and

(orders.shipvia =2

) and

(@shipcity=''

) 執行計畫顯示查詢成本分別是:49.49%和50.51%

另外就是看不懂優化後的where後面是什麼意思,鬱悶ing~~~~~記下這筆,有時間研究下

VS自動優化SQL語句邏輯與效率的疑問

用vs2005時發現乙個問題,生成資料集時,vs會幫你自動優化語句,一般都不懷疑微軟的水平,不過這次優化之後實在是看不懂了,懷疑優化錯了,於是在查詢分析器裡試了一下,結果倒是對的,可是執行計畫裡卻顯示優化後的效率低一些,奇怪了 下面 裡前一行是我寫的,後一行是vs優化出來的 使用了sql serve...

sql語句的效率優化等

優化前的語句 postgres 資料庫,優化前20s,優化後200ms select c.key,c.x key,c.tags,x.name from context c join x on c.x key x.key where c.key any array 15368196,11,000 ot...

SQL表關聯中的邏輯與效率

入職後用了sql也有一年了,對sql和各個資料庫的了解也漸漸多了起來。感覺sql的關聯蠻有意思的,在這裡寫一下自己對這玩意的認識的總結吧。本篇主要是通過目前接觸到的兩個資料庫 vertica和impala oracle和mysql也有,但是個人用的不多 的執行計畫來寫的,優化器做到差不多地步的資料庫...