索引
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...