唯一的是什麼?
1. 索引列(字段)的所有值都只能出現一次,即必須唯一
主鍵索引與唯一索引的區別
1. 主鍵是一種約束,唯一索引是一種索引,兩者在本質上是不同的。
2. 主鍵建立後一定包含乙個唯一性索引,唯一性索引並不一定就是主鍵。
3. 唯一性索引列允許空值,而主鍵列不允許為空值。
4. 主鍵列在建立時,已經預設為空值
++
唯一索引了。
5. 乙個表最多只能建立乙個主鍵,但可以建立多個唯一索引。
6. 主鍵更適合那些不容易更改的唯一標識,如自動遞增列、身份證號等。
7. 主鍵可以被其他表引用為外來鍵,而唯一索引不能。 ?
復合索引
1. 使用者可以在多個列上建立索引,這種索引叫做復合索引
(組合索引)。
2. 就是幾個字段聯合在一起組成乙個索引
.復合索引的建立方法與建立單一索引的方法完全一樣。
3. 但復合索引在資料庫操作期間所需的開銷更小,可以代替多個單一索引。
4. 當表的行數遠遠大於索引鍵的數目時,使用這種方式可以明顯加快表的查詢速度。
(abc) (
ab) (
ac)(
bc)(
a) (
b) (c)
1. 復合索引又叫聯合索引。
2. abc ab a ac 可以
3. 對於復合索引
:mysql
從左到右的使用索引中的字段,乙個查詢可以只使用索引中的一部份,但只能是最左側部分。
4. 例如索引是
key index (a,b,c).
可以支援
a | a,b| a,b,c 3
種組合進行查詢,但不支援
b,c進行查詢
,當最左側欄位是常量引用時,索引就十分有效。
除復合索引外,什麼情況下索引被使用,什麼情況下不會被使用
1. 建立索引的目的就是幫助查詢
,如果查尋用不到則索引就沒有必要建立。
2. 如果表是經常需要更新的也不適合做索引 。頻繁更新會導致索引也會頻繁更新,降低寫的效率。
3. 唯一性差的字段不適合建立索引。
4. 當給乙個字段建立了索引的話,而這個欄位要進行
like
模糊查詢的話,那麼這個值左邊不可以有
%,因為索引查詢是要從左到右的,你如果給它加上
%後,左邊的值不是確定的話,它會找不到這個索引。所以在使用
like
模糊查詢的時候,值得左邊不可以有%。
5. order by 不會使用索引
6. or 當前後
2個字段都有索引時才可以索引出來 否則不可以。
7. 如果資料表過大
(5w以上
)則有些字段
(字元型長度超過
(40))
不適合作為索引。查詢大量資料時
,索引有效
,但是慢
8. 不使用索引的原因:因為索引時會先過一遍索引在過一遍資料
全文檢索:
1. 全文檢索就是
fulltext
,用於
myisam
表,在列型別為
char
、varchar
或 text
列上建立。
2. 將資料裝載到乙個沒有
fulltext
索引的表中,然後再使用
alter table (
或 create index)
建立索引,這將是非常快的。
3. 將資料裝載到乙個已經有
fulltext
索引的表中,將是非常慢的。
4. mysql自帶的全文索引只能對英文進行全文檢索。要檢索中文用
sphinx
。5. 建立全文檢索:
alter table
表名 add fulltext index
索引名(
列名,[列名]
,[列名]..
(可以有多個,可以有乙個)
6. 在建立表的時候建全文檢索:
create table article (
7. id int unsigned auto_increment not null primary key,
8. fulltext (title, content) --在
title
和content
列上建立全文索引
場景1. 當資料多且字段值有相同的值得時候用普通索引。
2. 當欄位多且字段值沒有重複的時候用唯一索引。
3. 當有多個欄位名都經常被查詢的話用復合索引。
4. 普通索引不支援空值,唯一索引支援空值。
5. 但是,若是這張表增刪改多而查詢較少的話,就不要建立索引了,因為如果你給一列建立了索引,那麼對該列進行增刪改的時候,都會先訪問這一列的索引,
6. 若是增,則在這一列的索引內以新填入的這個欄位名的值為名建立索引的子集,
7. 若是改,則會把原來的刪掉,再添入乙個以這個欄位名的新值為名建立索引的子集,
8. 若是刪,則會把索引中以這個字段為名的索引的子集刪掉。
9. 所以,會對增刪改的執行減緩速度,
10. 所以,若是這張表增刪改多而查詢較少的話,就不要建立索引了。
11. 更新太頻繁地字段不適合建立索引。
12. 不會出現在
where
條件中的字段不該建立索引。
索引建立
create [unique|clustered] index index_name on table_name(property_name);
其中unique和
clustered
為可選項,分別是建立唯一索引和聚簇索引,具體解釋為:
unique:表示此索引的每乙個索引值只對應唯一的資料。
clustered:表示要建立的索引時聚簇索引,即索引項的順序與表中記錄的物理順序一致的索引組織
alter table table_name add index index_name (column_list)
索引的應用場景以及如何使用
唯一的是什麼?1.索引列 字段 的所有值都只能出現一次,即必須唯一 主鍵索引與唯一索引的區別 1.主鍵是一種約束,唯一索引是一種索引,兩者在本質上是不同的。2.主鍵建立後一定包含乙個唯一性索引,唯一性索引並不一定就是主鍵。3.唯一性索引列允許空值,而主鍵列不允許為空值。4.主鍵列在建立時,已經預設為...
redis 集合使用以及應用場景
集合這個功能到目前我做的專案中,還沒用過,很慚愧,為了讓自己加深記憶和了解記錄了這篇,按照網上的教程和別人的部落格照貓畫虎的。自己去寫了一下。應用場景標籤,分類等。哪先理解一下這個功能,在客戶端測試,還是看圖說話 smembers nameset 返回nameset中所有的資料。scard name...
simhash 介紹以及應用場景
simhash 演算法是一種區域性敏感的雜湊演算法,能實現相似文字內容的去重。資訊摘要演算法 如果兩者原始內容只相差乙個位元組,所產生的簽名也很有可能差別很大。simhash 演算法 如果原始內容只相差乙個位元組,所產生的簽名差別非常小。simhash值的對比 通過兩者的 simhash 值的二進位...