用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也有,但是個人用的不多 的執行計畫來寫的,優化器做到差不多地步的資料庫...