MySQL索引是很重要的概念,應用的范圍非常廣。那麼,MySQL索引究竟有何作用呢?下文將帶您一起尋找答案。
MySQL索引作用
在索引列上,除了上面提到的有序查找之外,數據庫利用各種各樣的快速定位技術,能夠大大提高查詢效率。特別是當數據量非常大,查詢涉及多個表時,使用索引往往能使查詢速度加快成千上萬倍。
例如,有3個未索引的表t1、t2、t3,分別只包含列c1、c2、c3,每個表分別含有1000行數據組成,指為1~1000的數值,查找對應值相等行的查詢如下所示。
SELECT c1,c2,c3 FROM t1,t2,t3 WHERE c1=c2 AND c1=c3
此查詢結果應該為1000行,每行包含3個相等的值。在無索引的情況下處理此查詢,必須尋找3個表所有的組合,以便得出與WHERE子句相配的那些行。而可能的組合數目為1000×1000×1000十億),顯然查詢將會非常慢。
如果對每個表進行索引,就能極大地加速查詢進程。利用索引的查詢處理如下。
1)從表t1中選擇第一行,查看此行所包含的數據。
2)使用表t2上的索引,直接定位t2中與t1的值匹配的行。類似,利用表t3上的索引,直接定位t3中與來自t1的值匹配的行。
3)掃描表t1的下一行並重復前面的過程,直到遍歷t1中所有的行。
在此情形下,仍然對表t1執行了一個完全掃描,但能夠在表t2和t3上進行索引查找直接取出這些表中的行,比未用索引時要快一百萬倍。
利用MySQL索引,MySQL加速了WHERE子句滿足條件行的搜索,而在多表連接查詢時,在執行連接時加快了與其他表中的行匹配的速度。
mysql索引的不足
MySql連接字符串的說明
mysql觸發器的三個狀態
mysql建主從服務器的實現方法
獲取當前時間的MySql時間函數