學習MYSQL索引後的一些思考

2021-10-25 11:28:16 字數 1814 閱讀 4790

create index方式,用於建立表的時候

普通的索引的建立:

create index (自定義)索引名 on 資料表(字段);

復合索引的建立:

create index (自定義)索引名 on 資料表(字段,欄位....);

alter table方式,用於建表完成後新增索引

//普通索引

alter table (表名) add index index_name (字段,欄位....) ;

//唯一索引

alter table (表名) add unique (字段,欄位....) ;

//主鍵索引

alter table (表名) add primary key (字段,欄位....) ;

//全文索引

alter table (表名) add fulltext (字段,欄位....) ;

//主鍵索引

alter table (表名) add index index_name (字段,欄位....) ;

在查詢條件前使用explain命令可以檢視sql的執行計畫,如果是null,說明無索引。

①大多數情況下很正常,偶爾很慢

​ (1)、資料庫在重新整理髒頁,例如 redo log 寫滿了需要同步到磁碟。

​ (2)、執行的時候,遇到鎖,如表鎖、行鎖。

②這條 sql 語句一直執行的很慢(索引失效,或者沒有索引,資料庫選擇不走索引)

​ 1、like 以%開頭,索引無效;當like字首沒有%,字尾有%時,索引有效。

​ 2、or語句前後沒有同時使用索引。當or左右查詢字段只有乙個是索引,該索引失效,只有當or左右查詢欄位均為索引時,才會生效

​ 3、組合索引,不是使用第一列索引,索引失效。

​ 4、資料型別出現隱式轉化(手動也會導致索引失效)。如varchar不加單引號的話可能會自動轉換為int型,使索引無效,產生全表掃瞄。

​ 5,在索引欄位上使用not,<>,!=。不等於操作符是永遠不會用到索引的,因此對它的處理只會產生全表掃瞄。 優化方法: key<>0 改為 key>0 or key<0。

6 ,查詢條件(=左邊出現運算或者函式),這時候索引會失效。

7 ,聯合索引會在遇到範圍查詢(>、<、between、like)就停止匹配。

也就是說,我們如果走 非主鍵索引這個欄位的索引的話,最後會查詢到對應主鍵的值,然後,再根據主鍵的值走主鍵索引,查詢到整行資料返回。所以說走全表查詢要查詢n行,那索引就是2n,如果n很大,這個時候2n >>n,資料庫就會放棄索引走全表查詢)

所謂聚集索引,就是data域存放著資料,主鍵索引就屬於聚集索引。

非聚集索引是data存放著主鍵或資料的指標,二級索引就屬於非聚集索引。

如果我們要查詢的字段恰好建立了索引,那就不用「回表」再根據主鍵查一遍,直接返回值

例如:select name from table_a where name=『zrx』;;這時候我們恰好有為name欄位建立索引,我們就能得到name的值(因為索引的key本身就是name啊),系統難道還會去根據主鍵回表再查一遍嗎?答案是肯定不會的。

同樣地,

例如:select id from table_a where id=『10086』;這查詢也會出現索引覆蓋,因為主鍵索引的key同樣是id,資料庫就不會再去回表查詢一遍了。

這個覆蓋索引有點奇奇怪怪啊,根據乙個已經知道的值再查一遍。不過我猜想還是有作用的,應該在像右模糊查詢這種情況下。

1.查詢頻繁,修改不頻繁

2.經常作為條件查詢的

引用:

索引的一些思考

一 索引是什麼?答 索引是一種資料結構,它和表中的列有對應關係,索引是有序的,但資料的物理排序不一定是按照索引的順序排列的。如果是按照索引排序的,則稱為聚集索引 如果不是,則稱之為非聚集索引。由於聚集索引會影響到資料的物理排序,所以每個表只能有乙個聚集索引,但可以有多個非聚集索引。例子解釋 1 cr...

深度學習入手後的一些思考

1.深度學習的數學構建還不夠充分,我可以問你很多的東西,bn層有什麼用,這些東西很多人都會,達叔的課程都氾濫了,我區分不開大家的程度,所以會問一些數學依賴更重一些的ml的基礎知識,所以對於校招還是需要學好西瓜書。2.問 我競賽取得的名次不是很高誒,面試官會不會覺得有些水?答 我覺得面試官更重視的是你...

mysql 索引學習的一些總結

一 使用索引的注意事項 1 索引不會包含有null值的列 資料庫設計時不要讓字段的預設值為null 2 使用短索引 對串列進行索引,如果可能應該指定乙個字首長度,前10個或20個字元內 使用短索引可以大量節省磁碟空間,也有可能會使查詢更快 較小的索引涉及的磁碟i o較少,較短的值比較起來更快 對於較...