tips:
索引是能提高幫助mysql高效獲取資料的一種資料結構。
例如:在10000條資料中查詢某條資料,若沒有索引,則需以遍歷的方式查詢該資料資訊;若有索引,則可通過一定的資料結構儲存方式查詢,以提高查詢效率。
1> 定義:是最基本的索引,它沒有任何限制。
2> 實現:
-- 1.直接建立索引
create
index index_name on table_name(column_name(length)
)-- 2. 修改表結構的方法新增索引
alter
table table_name add
index index_name (column_name(length)
)-- 3. 建立表的時候建立索引
create
table
`table`(
`id`
int(5)
notnull
auto_increment
,`name`
char(25
)character
notnull
,`content`
text
character
null
,primary
key(
`id`),
index index_name (
`name`
(length)
)-- 普通索引
)
1> 定義:索引列的值必須唯一,但允許有空值。
2> 實現:
-- 1.直接建立索引
create
unique
index index_name on table_name(column_name(length)
)-- 2. 修改表結構的方法新增索引
alter
table table_name add
unique
index index_name(column_name(length)
)-- 3. 建立表的時候建立索引
create
table
`table`(
`id`
int(5)
notnull
auto_increment
,`name`
char(25
)character
notnull
,`content`
text
character
null
,primary
key(
`id`),
unique
index index_name (
`name`
(length)
)--唯一索引
)
1> 定義:乙個表只能有乙個主鍵,索引列的值必須唯一,且不允許有空值。
2> 實現:
-- 建立表的時候建立索引
create
table
`table`(
`id`
int(5)
notnull
auto_increment
,`name`
char(25
)character
notnull
,`content`
text
character
null
,primary
key(
`id`
)-- 主鍵
)
1> 定義:指在多個欄位上建立的索引,只有在查詢條件中使用了建立索引時的第乙個字段,索引才會被使用。使用組合索引時遵循最左字首集合。例如當查詢條件為where a=『***』 and b='***』時,建立組合索引(a,b)可提高資料獲取的效率。具體例子可參考該文
2> 實現:
-- 1. 修改表結構的方法新增索引
alter
table table_name add
index composition_index_name(column1_name,column2_name,column3_name)
;-- 2. 建立表的時候建立索引
create
table
`table`(
`id`
int(5)
notnull
auto_increment
,`name`
char(25
)character
notnull
,`content`
text
character
null
,primary
key(
`id`),
index composition_index_name(
`name`,`content`
)--唯一索引
)
1> 定義:主要用來查詢文字中的關鍵字,而不是直接與索引中的值相比較。作用於char、varchar和text的字段。
2> 實現:
-- 1.直接建立索引
create fulltext index index_name on table_name(column_name)
-- 2. 修改表結構的方法新增索引
alter
table table_name add fulltext index index_name(column_name)
-- 3. 建立表的時候建立索引
create
table
`table`(
`id`
int(5)
notnull
auto_increment
,`name`
char(25
)character
notnull
,`content`
text
character
null
,primary
key(
`id`),
fulltext (content)
--全文索引
)-- 4.使用全文索引 match...against...
select
*from table_name where
match
(column_name) against(
'匹配的字串'
)
1> 顯示表中索引資訊
show
index
from table_name;
2> 刪除索引資訊
drop
index index_name on table_name ;
alter
table table_name drop
index index_name ;
alter
table table_name drop
primary
key;
3> explain:可幫助我們分析 select 語句查詢結果(例如查詢次數等),讓我們知道查詢效率低下的原因,從而改進我們的查詢。
1> innodb預設索引的資料結構是btree。
2> 索引不是越多越好。
3> 不要對經常變動的資料新增索引。
4> 資料量小的資料一般不使用索引。
5> 索引可加在常用字段上,提高平時的查詢效率。
6> 索引會降低更新表的速度。因為更新表時,不僅要儲存資料,還要儲存一下索引檔案。
MySQL學習筆記(三)索引
索引 簡介索引是乙個單獨的 儲存 在磁碟上的資料庫結構,他們包含著對資料表裡所有記錄的引用指標。使用索引用於快速找出在某個或多個列有一特定值的行,所有mysql列型別都可以被索引,對相關列使用索引是提高查詢操作速度的最佳途徑。索引的優點 可以大大加快資料的查詢速度。在實現資料的參考完整性方面,可以加...
Mysql學習筆記三 索引
在關聯式資料庫中,如果有上萬甚至上億條記錄,在查詢記錄的時候,想要獲得非常快的速度,就需要使用索引。索引是關聯式資料庫中對某一列或多個列的值進行預排序的資料結構。通過使用索引,可以讓資料庫系統不必掃瞄整個表,而是直接定位到符合條件的記錄,這樣就大大加快了查詢速度。例如,對於students表 idc...
MYSQL索引 學習筆記
索引分類 索引失效 索引帶來的弊端 幫助mysql進行高效查詢的資料結構 有序 在資料之外,資料庫系統還維護著滿足特定查詢演算法的資料結構,這些資料結構以某種方式引用 指向 資料,這樣就可以在這些資料結構上實現高階查詢演算法,這種資料結構就是索引 換言之,索引就是某種資料結構 如下圖所示 左邊是資料...