mysql index 資訊 MySQL 索引

2021-10-19 16:46:45 字數 2297 閱讀 1417

mysql索引的建立對於mysql的高效執行是很重要的,索引可以大大提高mysql的檢索速度。

打個比方,如果合理的設計且使用索引的mysql是一輛蘭博基尼的話,那麼沒有設計和使用索引的mysql就是乙個人力三輪車。

索引分單列索引和組合索引。單列索引,即乙個索引只包含單個列,乙個表可以有多個單列索引,但這不是組合索引。組合索引,即乙個索包含多個列。

建立索引時,你需要確保該索引是應用在 sql 查詢語句的條件(一般作為 where 子句的條件)。

實際上,索引也是一張表,該錶儲存了主鍵與索引字段,並指向實體表的記錄。

上面都在說使用索引的好處,但過多的使用索引將會造成濫用。因此索引也會有它的缺點:雖然索引大大提高了查詢速度,同時卻會降低更新表的速度,如對表進行insert、update和delete。因為更新表時,mysql不僅要儲存資料,還要儲存一下索引檔案。

建立索引會占用磁碟空間的索引檔案。

普通索引

建立索引

這是最基本的索引,它沒有任何限制。它有以下幾種建立方式:create index indexname on mytable(username(length));

如果是char,varchar型別,length可以小於字段實際長度;如果是blob和text型別,必須指定 length。

修改表結構alter mytable add index [indexname] on (username(length))

建立表的時候直接指定create table mytable(

id int not null,

username varchar(16) not null,

index [indexname] (username(length))

刪除索引的語法drop index [indexname] on mytable;

唯一索引

它與前面的普通索引類似,不同的就是:索引列的值必須唯一,但允許有空值。如果是組合索引,則列值的組合必須唯一。它有以下幾種建立方式:

建立索引create unique index indexname on mytable(username(length))

修改表結構alter mytable add unique [indexname] on (username(length))

建立表的時候直接指定create table mytable(

id int not null,

username varchar(16) not null,

unique [indexname] (username(length))

使用alter 命令新增和刪除索引

有四種方式來新增資料表的索引:alter table tbl_name add primary key (column_list): 該語句新增乙個主鍵,這意味著索引值必須是唯一的,且不能為null。

alter table tbl_name add unique index_name (column_list): 這條語句建立索引的值必須是唯一的(除了null外,null可能會出現多次)。

alter table tbl_name add index index_name (column_list): 新增普通索引,索引值可出現多次。

alter table tbl_name add fulltext index_name (column_list):該語句指定了索引為 fulltext ,用於全文索引。

以下例項為在表中新增索引。mysql> alter table testalter_tbl add index (c);

你還可以在 alter 命令中使用 drop 子句來刪除索引。嘗試以下例項刪除索引:mysql> alter table testalter_tbl drop index (c);

使用 alter 命令新增和刪除主鍵

主鍵只能作用於乙個列上,新增主鍵索引時,你需要確保該主鍵預設不為空(not null)。例項如下:mysql> alter table testalter_tbl modify i int not null;

mysql> alter table testalter_tbl add primary key (i);

你也可以使用 alter 命令刪除主鍵:mysql> alter table testalter_tbl drop primary key;

刪除指定時只需指定primary key,但在刪除索引時,你必須知道索引名。

顯示索引資訊

你可以使用 show index 命令來列出表中的相關的索引資訊。可以通過新增 \g 來格式化輸出資訊。

嘗試以下例項:mysql> show index from table_name\g

MySQL Index 索引提示

sql 提示 sql hint 是優化資料庫的乙個重要手段,簡單來說就是在sql 語句中加入一些人為的提示來達到優化操作的目的。在查詢語句中表名的後面,新增use index 來提供希望mysql 去參考的索引列表,就可以讓mysql 不再考慮其他可用的索引。mysql explain select...

Python PyMySQL模組讀寫MySQL資料

安裝 pip install pymysqlpymysql 操作和mysqldb 類似,可參考 python程式設計 mysqldb模組對資料庫的基本增刪改查操作 import pymysql 連線 conn pymysql.connect host 127.0.0.1 port 3306 user...

powerdesigner正向生成mysql

選擇database genarate database選單,在開啟的視窗中選擇options頁籤,找到key選項,系統預設為outside,如圖 生成的建表指令碼是 create table test action id int 32 not null auto increment,action ...