1. 程式人生 > >(2.8)Mysql之SQL基礎——索引的分類與使用

(2.8)Mysql之SQL基礎——索引的分類與使用

中標 var chang mysq type add har 滿足 空間

(2.8)Mysql之SQL基礎——索引的分類與使用

按邏輯分類:

1、主鍵索引(聚集索引)(也是唯一索引,不允許有空值)

2、普通索引或單列索引

3、多列索引(復合索引)

4、唯一索引或非唯一索引(非唯一索引其實就是普通/多列索引)

5、空間索引

6、創建索引的基本形式

7、索引的操作

1.查看索引
2.創建單列索引
3.復合索引
4.唯一索引(允許多個空值,每列唯一)
5.主鍵索引(不允許空值,唯一)
6.索引的刪除
7.刪除自增auto_increment

 

6.創建索引的基本形式

create [unique|fulltext|spatial] index index_name

[index_type
]   on table_name(index_col_name,...) [index_option] [alogorithm_option | lock_option]... index_colname:   col_name[(length)][asc | desc]

1.
[unique|fulltext|spatial] 可選參數,分別是唯一索引、全文索引、空間索引
2.index 創建索引的關鍵字,或者也可以用(key)
3.index_col_name 表中要創建索引的列對象
4.index_name 創建的索引名字
5.length 可選參數,索引的長度,只能用於字符串
6.[asc | desc] 索引值得存儲方式

最簡單最常用的方式:
  create index 索引名 on 表名(列名);
  create index ix_test101_id on test101(id);
  create index ix_test101_name on test101(name(10)); #截取該字段前10個字符作為索引
  alter table test101 add index 索引名(列名);

7、索引的操作

0.建表時創建索引

  
create table test102(
id int primary key auto_increment,
name varchar(12),
description varchar(200),
index ix_test102_description(description)
);

1.查看索引   show index from table_name; 2.單列索引   create index 索引名 on 表名(列名);   create index ix_test101_id on test101(id);   create index ix_test101_name on
test101(name(10)); #截取該字段前10個字符作為索引   alter table test101 add index 索引名(列名); 3.復合索引   create index 索引名 on 表名(列名1,列名2);   alter table test101 add index 索引名(列名1,列名2); 4.唯一索引(允許多個空值,每列唯一)
  create unique index 索引名 on 表名(列名);
  alter table test101 add unique index 索引名(列名);
5.主鍵索引(不允許空值,唯一)
  alter table test101 add primary key (列名)
  
6.索引的刪除   1).單列/多列/唯一索引刪除:drop index 索引名 on 表名; or alter table test101 drop
  2).主鍵索引刪除: alter table test101 drop primary key;(如果有自增字段,需要先刪除自增)

7.刪除自增auto_increment
  alter table test101 change id int;

  8.全文索引(詳情參考:倒排索引)

  概念:其實就是倒排索引,把文檔分詞,然後以詞為索引搜索,每個詞索引上都包含對應的 <詞,文檔編號,tf(即出現次數)> ,

  倒排索引長成什麽樣子呢?就是圖中標記的那樣,每個詞後面有一個拉鏈,拉鏈中存放包含該詞的文檔編號,利用這個數據結構能快速的找到包含某一個詞的所有文檔。

  技術分享圖片

詞頻 (term frequency, TF) 指的是某一個給定的詞語在該文件中出現的次數。這個數字通常會被歸一化(一般是詞頻除以文章總詞數), 以防止它偏向長的文件。(同一個詞語在長文件裏可能會比短文件有更高的詞頻,而不管該詞語重要與否。)

但是, 需要註意, 一些通用的詞語對於主題並沒有太大的作用, 反倒是一些出現頻率較少的詞才能夠表達文章的主題, 所以單純使用是TF不合適的。權重的設計必須滿足:一個詞預測主題的能力越強,權重越大,反之,權重越小。所有統計的文章中,一些詞只是在其中很少幾篇文章中出現,那麽這樣的詞對文章的主題的作用很大,這些詞的權重應該設計的較大。IDF就是在完成這樣的工作.

公式:

技術分享圖片



(2.8)Mysql之SQL基礎——索引的分類與使用