mysql索引我又部落格園 mysql索引

2021-10-20 23:26:25 字數 1462 閱讀 1315

什麼是索引?

索引技術是一種快速資料訪問技術,它將乙個檔案的每個記錄在某個或某些域上的取值與該記錄的實體地址直接聯絡起來,提供了一種根據記錄域的取值快速訪問檔案記錄的機制。

索引技術的關鍵是建立記錄域取值到記錄的實體地址間的對映關係,這種關係稱為索引。

索引的技術分類: 分為有序索引和雜湊索引。

對於基本表,可考慮在下面一些屬性上建立索引:

(1)表的主碼。(2)在where查詢子句中引用效率高的屬性(經常在where後面用作查詢條件的) (3)參與連線操作的屬性 (4)在order by 子句、group by子句**現的屬性。

(5)在某一範圍內頻繁搜尋的屬性,但只有當使用索引的查詢其結果不超過記錄總數的20%時索引才會有明顯的效果。

(6)如果在where子句中同時包含乙個表中的多個屬性,則可以考慮在這些屬性上建立多屬性索引;

此外,如果資料庫檔案需要頻繁執行精確匹配查詢(如等值查詢),則可以考慮建立雜湊索引。而b+樹等有序索引更適合於範圍查詢

(7)當乙個屬性有相對較多的不同值時,使用索引有明顯的作用;當乙個屬性的不同值很少時,使用索引沒有好處。

(8) 對包含大量空值的屬性建立索引時要仔細考慮,因為很多資料庫管理系統中的索引不引用具有空值的行,對空值的查詢需要使用全表掃瞄來實現。

mysql 索引型別有:唯一索引,主鍵(聚集)索引,非聚集索引,全文索引。

聚集(clustered)索引,也叫聚簇索引。

定義:資料行的物理順序與列值(一般是主鍵的那一列)的邏輯順序相同,乙個表中只能擁有乙個聚集索引。

alter table table_name add primary key(colum_name)

非聚集(unclustered)索引。

定義:該索引中索引的邏輯順序與磁碟上行的物理儲存順序不同,乙個表中可以擁有多個非聚集索引。

使用 create index 語句

可以使用專門用於建立索引的 create index 語句在乙個已有的表上建立索引,但該語句不能建立主鍵。

語法格式:

create on ( [ asc | desc])

語法說明如下:

:指定索引名。乙個表可以建立多個索引,但每個索引在該表中的名稱是唯一的。

:指定要建立索引的表名。

:指定要建立索引的列名。通常可以考慮將查詢語句中在 join 子句和 where 子句裡經常出現的列作為索引列。

:可選項。指定使用列前的 length

個字元來建立索引。使用列的一部分建立索引有利於減小索引檔案的大小,節省索引列所佔的空間。在某些情況下,只能對列的字首進行索引。索引列的長度有乙個最大上限

255 個位元組(myisam 和 innodb 表的最大上限為 1000

個位元組),如果索引列的長度超過了這個上限,就只能用列的字首進行索引。另外,blob 或 text 型別的列也必須使用字首索引。

asc|desc:可選項。asc指定索引按照公升序來排列,desc指定索引按照降序來排列,預設為asc

mysql索引我又部落格園 MySQL索引

一.索引介紹 資料庫中專門用於幫助使用者快速查詢資料的一種資料結構.類似於字典中的目錄,查詢字典內容時可以根據目錄查詢到資料的存放位置,然後直接獲取.無索引查詢需要從開始向後一條一條查詢.建立索引查詢的本質,即使建立額外的檔案 使用某種格式儲存,查詢的時候先去額外的檔案定好位置 然後再去原始的表中直...

mysql部落格園 mysql

一 聯合查詢 在兩種情況下可能用到 1 想要的結果在一條語句中會引起邏輯衝突,只能放在兩條語句中是要使用聯合查詢 2 一張表的資料量非常大時,會分隔成多張表儲存,要查詢時也要用到聯合查詢 2,聯合查詢中的order by必須搭配上limit關鍵字才能生效!因為系統預設的聯合查詢的結果往往比較多,所以...

我的部落格園主題

首先,感謝gshang 這位大佬。我的主題原型就是他做的bili2.0 主題,個人很喜歡。在這個主題的基礎上,我進行了一些修改,得到了現在的主題。我的主題 並不打算發不出來,主要有以下兩個原因。我是根據個人喜好進行的修改,它不一定可以滿足你。未得到原作者允許,將基於bili2.0修改的主題共享出來不...