1樓:神裝法師
多次重複執行第二條語句,如果每次都慢,才能說明是第二條語句的固有問題。如果有時快有時慢,說明不是語句的固有問題,是跟資料庫負載以及buffer cache中的資料有關係。
如果確認是語句的固有問題,要準備定位15秒的時間究竟是花在**,只有做trace這一種方法,其他方法都只是猜測。
做trace的方法網上可以搜到,之後對trace檔案用tkprof處理,可以看到15秒都用在了**,哪一步花了多少時間,這樣就可以準確定位出問題的地方。
如果lz不願意做trace,那麼根據經驗,我認為這個問題出在索引選擇(與第一條語句選擇的索引不同)的可能性第一,出在排序的可能性第二。
有不明白的,可以在明天pm我
補充:什麼都不做就想知道問題具體是怎麼回事是做不到的
1、執行計劃貼出來看一下。
2、tkprof的結果貼出來看一下。
這兩者沒有,一切都是空談。
2樓:匿名使用者
哎,沒辦法呀,兄弟。現實就這樣。
3樓:
select
a.id1
from
awhere exists(select 1 from b a.pk1 = b.pk1 )
and exists(select 1 from c a.pk2 = c.pk2 )
and a.col1 = '1'
order by a.col2
--如果有exists並語法能過去用這個,因為你只查一表的資料,沒必要用連線,
還有索引並不是加了就會快,要看你怎麼加,針對查詢,如果排序有必要才加上,要不然耗費過多i/o來整理順序--sql2000如果要加索引可以加 (col1,id,col2)2005可以使用包含索引col1 include(id,col2)
sql 更新語句update 效率問題
這樣就是替換的了。update yearnew 引數為要變成的新日期年份 update yearold 引數為舊日期年份 declare update yearnew as int,update yearold as int set update yearnew 2008 設定要更改的新日期 set...
SQL語句問題,SQL語句問題
樓主在資料結構有問題,帳號相同是可以的,但其實兩者在關係並不是單單是帳號在關係,還有工號之間有關係,所以你的結構有點點問題,既然工號之間也是有關係的,那麼也應該提取出來,所以你的b表應該儲存為 三個欄位 賬號 收銀員 營業員 儲存內容 賬號 收銀員id 營業員id 那麼你想要的結果就很清晰了 sel...
SQL排序問題,高手請進,SQL 排序問題,高手請進
declare a int set a 3 select top 5 id from select id,1 as flag from a where id not in select top a 1 id from a union select top a 1 id,2 as flagfrom a...