mysql 整理(六)索引,更新數據


更新數據

UPDATE tablename 

SET column1 = value1,column2 = value2 ,。。。。,columnN = valueN

where id = 1;

 

刪除數據

DELETE FROM tablename  where id=3;

 

 

索引

什么是索引:

一種數據結構,提高數據庫中特定數據的查詢速度。

索引在存儲引擎中實現,每種存儲引擎的索引不一定相同,每種存儲引擎不一定支持所有索引類型。

索引有:BTREE 和HASH 兩種存儲類型。

MyISAM 和InnoDB 存儲引擎值支持BTREE索引,MEMORY/HEAP支持HASH 和BTREE。

 

索引優點:

創建唯一索引,保證數據唯一性。

大大加快數據查詢速度。

加速表與表之間連接。

顯著減少查詢中分組和排序的時間。

 

不利:

創建索引耗費時間。

占磁盤空間。

數據增刪改的時候索引要動態維護,降低維護速度。

 

索引設計原則:

一、並非越多越好,占空間影響增刪改表數據的性能。

二、避免添加不必要字段。

三、數據量小的表不要用索引,查詢時間比創建索引還短。

四、在不同的值很少的列上不要建立索引比如性別只有男和女,會嚴重降低數據更新速度。

五、當唯一性是某個數據列的特點,就建立唯一索引可以提高數據查詢速度。

六、在頻繁分組和排序的列上建立索引,如果待排序的列有多個就建立組合索引。

 

索引分類:

普通索引和唯一索引

普通索引是基本索引類型勻速插入重復和空值。

唯一索引必須唯一,允許空值,如果是組合索引列值必須唯一,主鍵索引是特殊唯一索引不允許空值。

 

單列索引和組合索引

單列索引就是只包含單個列,一個表可以有多個單列索引。

組合索引在標的多個字段組合上創建索引,只有在查詢條件中使用這些字段的左邊字段,索引才會被使用,組合索引遵守最左前綴

 

索引創建

普通索引

最基本的索引沒有限制,只是加快數據訪問速度

CREATE TABLE book

id     INT(11)  AUTO_INCREMENT,

date DATE NOT NULL,

INDEX(date)

);

使用explain 查詢索引是否啟用

explain  select *from  book   date = "19993366778899" \G

參數:

possible_keys代表可選用索引數

key行是mysql實際選用索引數

key_len行給樹索引按字節計算的長度越小越快。

 

 

創建唯一索引

UNIQUE INDEX UniqIdx(id)

 

單列索引

INDEX SingleIdx(name(20))

名為SingleIdx單列索引索引長度為20

 

組合索引

INDEX MultiIdx(idname,age(1000))

遵守最左前綴,查詢可以用 (id,name,age),(id,name)或者id不構成最左前綴就不會啟動索引。

 

 

全文搜索:

FULLTEXT INDEX FullTxtIdx(info)

空間索引

SPATIAL INDEX spatIdx(g)

 

在已存在表創建索引

ALTER TABLE table_name ADD [UNIQUE|FULLTEXT|SPATIAL] [INDEX|KEY]  [index_name] (col_name[lenght],....) [ASC|DESC]

也可以使用CREATE INDEX 命令

 

SHOW INDEX FROM book  \G查看表的索引情況

參數

Non_unique 等於1 代表非唯一索引 0代表唯一索引

key_name代表索引名

Seq_in_index表示該字段在索引的位置 單列為1

Column_name 表示定義索引的列字段

Sub_part表示索引的長度。

NULL表示是否可以為空

Index_type 表示索引類型。

 

刪除索引

ALTER TABLE table_name DROP INDEX  index_name;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM