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 table tablename add index indexname(columnname)
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 table mytable add unique [indexname] (username(length))
create table mytable(有四種方式來新增資料表的索引:id int not null,
username varchar(16) not null,
unique [indexname] (username(length))
);
以下例項為在表中新增索引。
mysql> alter table testalter_tbl add index (c);你還可以在 alter 命令中使用 drop 子句來刪除索引。嘗試以下例項刪除索引:
mysql> alter table testalter_tbl drop index c;主鍵只能作用於乙個列上,新增主鍵索引時,你需要確保該主鍵預設不為空(not null)。例項如下:
mysql> alter table testalter_tbl modify i int not null;你也可以使用 alter 命令刪除主鍵:mysql> alter table testalter_tbl add primary key (i);
mysql> alter table testalter_tbl drop primary key;刪除主鍵時只需指定primary key,但在刪除索引時,你必須知道索引名。
你可以使用 show index 命令來列出表中的相關的索引資訊。可以通過新增 \g 來格式化輸出資訊。
嘗試以下例項:
mysql> show index from table_name; \g........
mysql 字首索引 語法 MySQL 字首索引
索引字首 使用 字串列的索引規範中的語法,您可以建立僅使用列首字元的索引 以這種方式僅索引列值的字首可以使索引檔案小得多。為a 或 column 編制索引時 必須為索引指定字首長度。例如 col name n nblobtext create table test blob col blob,ind...
mysql 字首索引 語法 mysql字首索引
應用場景 資料庫裡有個位址 address 字段,型別為varchar 100 業務決定了要經常根據address來進行查詢。確定選擇性 sql select count distinct address count as selectivity from info selectivity 0.87...
MySQL 查詢資料 語法及案例剖析
mysql 資料庫使用sql select語句來查詢資料。你可以通過 mysql 命令提示視窗中在資料庫中查詢資料,或者通過php指令碼來查詢資料。以下為在mysql資料庫中查詢資料通用的 select 語法 select column name,column name from table nam...