這篇文章主要介紹“MySQL索引詳細(xì)介紹”,在日常操作中,相信很多人在Mysql索引詳細(xì)介紹問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Mysql索引詳細(xì)介紹”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!
創(chuàng)新互聯(lián)建站長期為千余家客戶提供的網(wǎng)站建設(shè)服務(wù),團隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為江永企業(yè)提供專業(yè)的成都網(wǎng)站設(shè)計、成都網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè),江永網(wǎng)站改版等技術(shù)服務(wù)。擁有10余年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。
簡述:索引(Index)是一種幫助mysql高效獲取數(shù)據(jù)的一數(shù)據(jù)結(jié)構(gòu)。
詳述:除數(shù)據(jù)本身外,數(shù)據(jù)庫還維護著一個滿足特定查找算法的數(shù)據(jù)結(jié)構(gòu),這些數(shù)據(jù)結(jié)構(gòu)以某種方式指向數(shù)據(jù),這樣就可以在這些數(shù)據(jù)結(jié)構(gòu)的基礎(chǔ)上實現(xiàn)高級查找算法,這種數(shù)據(jù)結(jié)構(gòu)叫索引。
## 1. 創(chuàng)建索引
mysql> create index idx_employee_username on employee(username);
Query OK, 0 rows affected (1.71 sec)
Records: 0 Duplicates: 0 Warnings: 0
## 2. 查詢索引。從查詢結(jié)果來看,索引的類型是B樹
mysql> show index from employee;
+----------+------------+-----------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+------------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment | Visible | Expression |
+----------+------------+-----------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+------------+
| employee | 1 | idx_employee_username | 1 | username | A | 0 | NULL | NULL | YES | BTREE | | | YES | NULL |
+----------+------------+-----------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+------------+
1 row in set (1.73 sec)
注意:索引本身也很大,不可能全部存儲在內(nèi)存中,因此索引索引往往以索引文件的形式存儲到磁盤中;如果沒有特定說明,索引對應(yīng)的數(shù)據(jù)結(jié)構(gòu)都是B樹。
B樹:它的設(shè)計思想是,將相關(guān)數(shù)據(jù)盡量集中在一起,以便一次讀取多個數(shù)據(jù),減少硬盤操作次數(shù)。是對二叉查找樹的改進。有以下三個特點:
CREATE [UNIQUE] INDEX indexName ON tableName(columnName);
和
ALERT tableName ADD [UNIQUE] INDEX indexName ON (columnName);
DROP INDEX [indexName] ON tableName;
SHOW INDEX FROM tableName;
mysql中有專門負(fù)責(zé)優(yōu)化SELECT語句的優(yōu)化器,主要功能:通過計算分析系統(tǒng)中收集到的統(tǒng)計信息,為客戶端請求的Query提高其默認(rèn)的最優(yōu)執(zhí)行計劃(可能和我們認(rèn)為的最優(yōu)相違背,這部分耗費時間最長)
Explain解釋執(zhí)行可查看sql運行狀態(tài),語法如下:EXPLAIN sql語句
mysql> explain select * from employee where username='jhon';
+----+-------------+----------+------------+------+-----------------------+-----------------------+---------+-------+------+----------+-------+
| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
+----+-------------+----------+------------+------+-----------------------+-----------------------+---------+-------+------+----------+-------+
| 1 | SIMPLE | employee | NULL | ref | idx_employee_username | idx_employee_username | 83 | const | 1 | 100.00 | NULL |
+----+-------------+----------+------------+------+-----------------------+-----------------------+---------+-------+------+----------+-------+
1 row in set, 1 warning (0.00 sec)
到此,關(guān)于“Mysql索引詳細(xì)介紹”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>
本文題目:Mysql索引詳細(xì)介紹
轉(zhuǎn)載來于:http://weahome.cn/article/goggoj.html