mysql建立合適的索引的例子

來源:互聯網
上載者:User

在mysql資料庫中,其實建索引也是一門學問,一個表中,索引並不是越多越好,而是適合你的業務才最重要。那麼建立索引的時候,我們應該從以下幾點去考量。

 

1. 索引欄位越小越好,像varchar(10)肯定比text類型的效果要好。

2. 經常需要作為where、group by、order by等條件的時候,要為該欄位建立索引。

3. 當要建立聯合索引的時候,離散度較大的列放到前面。打個比方,如果要建立一個姓名(name)和年齡(age)的聯合索引,肯定要把name放到前面(index(name,age)),因為age的範圍最多不會超過0-120(全世界沒幾個人能活到120歲以上吧),而name的情況就有成千上萬種了。放到前面的好處就是第一次就能篩掉一大批資料,這樣更有利查詢的效率。

4. 只給經常作為查詢條件的欄位建立索引,因為索引並不是越多越好,多了首先會增加磁碟開銷,然後查詢的時候,mysql引擎也要去判斷該使用那個索引,再就是索引多了,對update、insert、delete的效率也會造成影響。

總之,建立索引的時候也要認真思考,才能讓表結構更加完美

 

 MySQL何時使用索引

  對一個鍵碼使用>, >=, =, <, <=, IF NULL和BETWEEN

SELECT * FROM table_name WHERE key_part1=1 and key_part2 > 5;
SELECT * FROM table_name WHERE key_part1 IS NULL;
  當使用不以萬用字元開始的LIKE

SELECT * FROM table_name WHERE key_part1 LIKE 'jani%'
  在進行連接時從另一個表中提取行時

SELECT * from t1,t2 where t1.col=t2.key_part
  找出指定索引的MAX()或MIN()值

SELECT MIN(key_part2),MAX(key_part2) FROM table_name where key_part1=10
  一個鍵碼的首碼使用ORDER BY或GROUP BY

SELECT * FROM foo ORDER BY key_part1,key_part2,key_part3
  在所有用在查詢中的列是鍵碼的一部分時間

SELECT key_part3 FROM table_name WHERE key_part1=1
------------------------------------------------------------------------------------------------------------------------------------

  MySQL何時不使用索引

  如果MySQL能估計出它將可能比掃描整張表還要快時,則不使用索引。例如如果key_part1均勻分布在1和100之間,下列查詢中使用索引就不是很好:

SELECT * FROM table_name where key_part1 > 1 and key_part1 < 90
  如果使用HEAP表且不用=搜尋所有鍵碼部分。

  在HEAP表上使用ORDER BY。

  如果不是用鍵碼第一部分

SELECT * FROM table_name WHERE key_part2=1
  如果使用以一個萬用字元開始的LIKE

SELECT * FROM table_name WHERE key_part1 LIKE '%jani%'
  搜尋一個索引而在另一個索引上做ORDER BY

SELECT * from table_name WHERE key_part1 = # ORDER BY key2

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.