mysql 索引使用教程

來源:互聯網
上載者:User

標籤:utf8   class   除了   磁碟空間   from   順序   file   一段   檔案   

1.什麼索引

  索引是一種特殊的檔案(InnoDB資料表上的索引是資料表空間的一個組成部分),它們包含著對資料表裡所有記錄的位置資訊。更通俗的說,資料庫索引好比是一本書前面的目錄,能加快資料庫的查詢速度.

2.索引工作原理

  除了詞典,生活中隨處可見索引的例子,如火車站的車次表、圖書的目錄等。它們的原理都是一樣的,通過不斷的縮小想要獲得資料的範圍來篩選出最終想要的結果,同時把隨機的事件變成順序的事件,也就是我們總是通過同一種尋找方式來鎖定資料。

  資料庫也是一樣,但顯然要複雜許多,因為不僅面臨著等值查詢,還有範圍查詢(>、<、between、in)、模糊查詢(like)、並集查詢(or)等等。資料庫應該選擇怎麼樣的方式來應對所有的問題呢?我們回想字典的例子,能不能把資料分成段,然後分段查詢呢?最簡單的如果1000條資料,1到100分成第一段,101到200分成第二段,201到300分成第三段……這樣查第250條資料,只要找第三段就可以了,一下子去除了90%的無效資料。

 

3.查看一個表中是否已經建立索引
show index from 表名;
4.建立索引(如果指定欄位是字串,需要指定長度,建議長度與定義欄位時的長度一致,欄位類型如果不是字串,可以不填寫長度部分)
create index 索引名 on 資料表(欄位名稱長度)
5.刪除索引
drop index 索引名稱 on 資料表
6.測試資料表是否能加快查詢速度6.1建立一個資料表
create table my_index(title varchar(10));
6.2 插入資料
from pymysql import connectdef main():    # 建立Connection串連    conn = connect(host=‘localhost‘,port=3306,database=‘python_test_1‘,user=‘root‘,password=‘xu666666‘,charset=‘utf8‘)    # 獲得Cursor對象    cursor = conn.cursor()    # 插入10萬次資料    for i in range(100000):        cursor.execute("insert into my_index values(‘ha-%d‘)" % i)    # 提交資料    conn.commit()if __name__ == "__main__":    main()
6.3 開始查詢並啟動時間檢測
  • 開啟已耗用時間監測:
set profiling=1;
  • 尋找第1萬條資料ha-99999
select * from my_index where title=‘ha-99999‘;
  • 查看執行的時間:
show profiles;
  • 為表title_index的title列建立索引:
create index test_index on my_index(title(10));
  • 執行查詢語句:
select * from my_index where title=‘ha-99999‘;
  • 再次查看執行的時間
show profiles;
6.4 測試結果

      

 

注意

  1.索引可以明顯提高某些欄位的查詢效率,但不能加快插入,更新,刪除資料的效率,相反由於每次資料表資料的更改都會讓索引重新排列,會降低效率

  2.要注意的是,建立太多的索引將會影響更新和插入的速度,因為它需要同樣更新每個索引檔案。對於一個經常需要更新和插入的表格,就沒有必要為一個很少使用的where字句單獨建立索引了,對於比較小的表,排序的開銷不會很大,也沒有必要建立另外的索引。建立索引會佔用磁碟空間。

    3. 建立索引要建立在常用的查詢欄位上,並且根據自己的需求建立說因數量

 

mysql 索引使用教程

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.