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]