資料庫索引實驗

2021-08-17 20:45:18 字數 1202 閱讀 7274

上週客戶的系統有乙個網頁反應超級緩慢,最後幫客戶定位到原因是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之前進行計算的查詢;

資料庫索引鍵uk 資料庫索引實驗

6 綜合型實驗專案索引和資料完整性 一 建立索引 對yggl 資料庫的 employees 表中的departmentid 列建立索引。create index ind dep onemployees departmentid 在employees 表的name 列和address 列上建立復合索引...

資料庫 資料庫索引

索引是儲存引擎用於快速找到記錄的一種資料結構。索引以檔案的形式儲存在磁碟中。索引可以包含乙個或多個列的值。儲存引擎查詢資料的時候,先在索引中找對應值,然後根據匹配的索引記錄找到對應的資料行。1.b tree索引 2.雜湊索引 myisam和innodb儲存引擎 只支援btree索引,也就是說預設使用...

資料庫mysql索引 資料庫 mysql索引

mysql 索引 mysql索引的建立對於mysql的高效執行是很重要的,索引可以大大提高mysql的檢索速度。打個比方,如果合理的設計且使用索引的mysql是一輛蘭博基尼的話,那麼沒有設計和使用索引的mysql就是乙個人力三輪車。索引分單列索引和組合索引。單列索引,即乙個索引只包含單個列,乙個表可...