萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> mysql教程 >> mysql建立合適的索引的例子

mysql建立合適的索引的例子

mysql建立合適的索引對於各位程序員來講是非常的重要的,下面我們來看看關於一個mysql建立合適的索引的例子,希望例子能夠幫助到各位。

在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

copyright © 萬盛學電腦網 all rights reserved