天天看點

處理并發---索引的優點(實驗貼)

1,測試驗證用到的簡單的sql語句:

SELECT *

FROM (SELECT row_.*, ROWNUM rownum_

FROM (SELECT "order_date"

FROM "test"

WHERE "order_no" =

TRUNC (DBMS_RANDOM.VALUE (24, 50024))) row_

WHERE ROWNUM <= 20)

WHERE rownum_ > 0

2,資料準備說明

a,本次對一個有5個字段的表test進行基本測試,驗證兩種情況:一,字段order_no有索引;二,字段order_no無所有,有無索引時做相同的測試驗證

b,相應時間機關:ms

c,測試驗證分同時并發和分鐘并發兩種情況驗證

d,表中有50000條資料

3,測試得到的資料

同時并發

10并發 50并發 80并發 100并發

無索引 756 2109 3053 3723

有索引 357 385 413 430

分鐘并發

200并發 500并發 1000并發 1500并發

無索引 255 260 10702 33163

有索引 4 3 1 4

4,結論總結

1,500以下的并發,有無索引,使用者不會有太明顯的感覺,因為他們的執行時間都不會大于0.3s

2,以“較高(500~3000)”并發頻率對50000資料的表進行簡單的查詢,此時有無索引就會有明顯的差别,可以達到5s以上

3,以“極高(>3000)”并發頻率對50000資料的表進行簡單的查詢,此時相應時間就會很慢,很慢

結合實際應用考慮,一些簡單的表(字段不太多,結果不複雜),在單個使用者反複執行sql語句時,有無索引對使用者來說可能體驗不到響應時間上的差異,而對于多使用者并發對這個表做操作時,有無索引的差異就會很明顯:在“較低”頻率并發情況下,由于表比較簡單,響應時間很小,看不出大的差異,當并發頻率“較高”,如大于500時,這種差異就會很明顯,如上面1500的并發,響應時間相差3s,依此類推,如果表字段很多,嵌套結構複雜,有無索引并發執行的差異将會很大,有些認知,覺得資料量少,字段少無需索引,單考慮并發性能還是把索引建上

[img]http://dl.iteye.com/upload/attachment/0065/5913/ca889fe9-7d01-352b-8b48-d1be5aebc88e.jpg[/img]

繼續閱讀