mysql索引的概念
索引是一種特殊的文件(InnoDB數據表上的索引是表空間的一個組成部分),它們包含著對數據表里所有記錄的引用指針。更通俗的說,數據庫索引好比是一本書前面的目錄,能加快數據庫的查詢速度。上述sql語句,在沒有索引的情況下,數據庫會遍歷全部200條數據后選擇符合條件的;而有了相應的索引之后,數據庫會直接在索引中查找符合條件的選項。如果我們把SQL語句換成“select * FROM?article WHERE id=2000000”,那么你是希望數據庫按照順序讀取完200萬行數據以后給你結果還是直接在索引中定位呢?(注:一般 數據庫默認都會為主鍵生成索引)。
推薦課程:MySql教程。
索引分為聚簇索引和非聚簇索引兩種,聚簇索引是按照數據存放的物理位置為順序的,而非聚簇索引就不一樣了;聚簇索引能提高多行檢索的速度,而非聚簇索引對于單行的檢索很快。
mysql索引的類型
1. 普通索引
這是最基本的索引,它沒有任何限制,比如上文中為title字段創建的索引就是一個普通索引,MyIASM中默認的BTREE類型的索引,也是 我們大多數情況下用到的索引。
–直接創建索引 CREATE?INDEX?index_name?ON?table(column(length)) –修改表結構的方式添加索引 ALTER?TABLE?table_name?ADD?INDEX?index_name?ON?(column(length)) –創建表的時候同時創建索引 CREATE?TABLE?`table`?( `id`?int(11)?NOT?NULL?AUTO_INCREMENT?, `title`?char(255)?CHARACTER?SET?utf8?COLLATE?utf8_general_ci?NOT?NULL?, `content`?text?CHARACTER?SET?utf8?COLLATE?utf8_general_ci?NULL?, `time`?int(10)?NULL?DEFAULT?NULL?, PRIMARY?KEY?(`id`), INDEX?index_name?(title(length)) ) –刪除索引 DROP?INDEX?index_name?ON?table
2. 唯一索引
與普通索引類似,不同的就是:索引列的值必須唯一,但允許有空值(注意和主鍵不同)。如果是組合索引,則列值的組合必須唯一,創建方法和普通索引類似。
–創建唯一索引 CREATE UNIQUE INDEX indexName ON table(column(length)) –修改表結構 ALTER TABLE table_name ADD UNIQUE indexName ON (column(length)) –創建表的時候直接指定 CREATE TABLE `table` ( `id` int(11) NOT NULL AUTO_INCREMENT , `title` char(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL , `content` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL , `time` int(10) NULL DEFAULT NULL , PRIMARY KEY (`id`), UNIQUE indexName (title(length))
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END