mysql指定索性 MySQL入門之索引

2021-10-17 15:47:16 字數 1427 閱讀 2547

索引

1 什麼是索引

索引是一種快速查詢表中內容的機制,使用索引可以提高查詢效率,相當於字典的目錄

可以將查詢過程中經常使用的條件設為索引

2 mysql中索引的型別

1)普通索引

這是最基本的索引型別,而且它沒有唯一性之類的限制。普通索引可以通過以下幾種方式建立:

建立索引,例如create index on tablename (列的列表);

修改表,例如alter table tablename add index [索引的名字] (列的列表);

建立表的時候指定索引,例如create table tablename ( [...], index [索引的名字] (列的列表) );

2)唯一性索引

這種索引和前面的「普通索引」基本相同,但有乙個區別:索引列的所有值都只能出現一次,即必須唯一。唯一性索引可以用以下幾種方式建立:

建立索引,例如create unique index on tablename (列的列表);

修改表,例如alter table tablename add unique [索引的名字] (列的列表);

建立表的時候指定索引,例如create table tablename ( [...], unique [索引的名字] (列的列表) );

3)主鍵

主鍵是一種唯一性索引,但它必須指定為「primary key」。主鍵一般在建立表的時候指定,例如「create table tablename ( [...], primary key (列的列表) ); 」。但是,我們也可以通過修改表的方式加入主鍵,例如「alter table tablename add primary key (列的列表); 」

4)全文索引

mysql從3.23.23版開始支援全文索引和全文檢索。在mysql中,全文索引的索引型別為fulltext。全文索引可以在varchar或者text型別的列上建立。它可以通過create table命令建立,也可以通過alter table或create index命令建立。對於大規模的資料集,通過alter table(或者create index)命令建立全文索引要比把記錄插入帶有全文索引的空表更快。

3 什麼情況下建立索引

1)表經常進行 select 操作

2)表很大(記錄超多),記錄內容分布範圍很廣

3)列名經常在 where 子句或連線條件**現

注意:符合上述某一條要求,都可建立索引,建立索引是乙個優化問題,同樣也是乙個策略問題

4索引的缺點

第二,對於需要寫入資料的操作,比如delete、update以及insert操作,索引會降低它們的速度。這是因為mysql不僅要把改動資料寫入資料檔案,而且它還要把這些改動寫入索引檔案。

-- 100萬條資料,查詢時有無索引,時間差距明顯--

select * from user where username='zz345';

mysql 組合索性 Mysql之組合索引方法詳解

對於任何dbms,索引都是進行優化的最主要的因素。對於少量的資料,沒有合適的索引影響不是很大,但是,當隨著資料量的增加,效能會急劇下降。如果對多列進行索引 組合索引 列的順序非常重要,mysql僅能對索引最左邊的字首進行有效的查詢。例如 假設存在組合索引 c1,c2 查詢語句select from ...

mysql 指定時間 MySQL查詢指定時間的資料

mysql查詢指定時間的資料 user event 使用者事件表 create time 表中儲存時間的字段 獲取當月資料 select from user event where date format create time,y m date format now y m 獲取3月份資料 sel...

mysql指定值排序 mysql某列指定值靠前排序

單個列靠前排序 mysql 某列指定值靠前排序 order by case select from jcxsw t company product order by case when id 263 then 1 else 4 end category id desc 這段sql 會先排列id 26...