数据库索引实验
上周客戶的系統有一個網頁反應超級緩慢,最后幫客戶定位到原因是sql慢查詢,在這兒簡單總結一下。
當數據庫中的數據量非常大的時候,數據庫訪問的速度會越來越慢,cpu和內存消耗變大,影響用戶體驗,可以通過創建索引來解決。
我做了一個實驗驗證了一下,效果非常明顯。
首先創建了一個數據表,通過腳本插入了1400w條數據(腳本跑了一晚上);
之后通過一個字段(非主鍵)進行查詢
結果如上圖所示,查詢用時近10秒,這個速度確實是非常慢了。
之后我再給“property”這個字段創建索引
create index pindex on property(property);之后再進行相同的操作,結果如下:
這次耗時幾乎為0
實驗證明創建索引的確能非常明顯的增加查詢性能
索引工作原理其實很簡單,如果通過某個字段(非主鍵)進行查詢,此時數據庫會進行全表掃描,非常消耗資源。創建索引后,數據庫會把創建索引的這個字段拿出來,重新分配資源建立索引,就像一本書的目錄一樣。
創建索引后,sql執行的時候會自動判斷該字段有沒有索引。
索引分:唯一索引、非唯一索引、主鍵索引、聚集索引。
創建非唯一索引的方法:
create index index_name on table_name(colunm_name);
查看索引的方法:
show index from table_name;
刪除索引的方法:
drop index index_name on table_name;
當然索引也是有弊端的,索引會降低插入數據的效率,因為每次增刪改數據的時候同時也需要創建一份索引的數據結構,增加了資源消耗,另外索引也是需要占用一部分磁盤空間的。
除了創建索引之外,還有其它一些方法可以在一定程度上降低sql慢查詢。
1.避免全表查詢的操作;
2.避免使用select * from 的操作,需要什么字段就查什么字段;
3.避免使用!= 、in、not in、or、like等不確定查詢的語句;
4.避免在sql語句where之前進行計算的查詢;
?
總結
- 上一篇: addEventListener与att
- 下一篇: 数据库索引高频面试题梳理