SQL效率問題

2022-12-31 06:46:05 字數 914 閱讀 1471

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...