正確理解Mysql中的列索引和多列索引_MySQL教程

      編輯Tag賺U幣
      教程Tag:暫無Tag,歡迎添加,賺取U幣!

      推薦:如何通過配置自動實現ValueList中hql語句的整型參數轉換
      通過valuelist的queryMap傳遞過來的參數默認都為string類型,在valuelist配置文件的hql中,如果直接將該值賦給整型的字段會報錯。一般我們會在hql中利用轉型函數來進行處理,如下: 復制代碼 代碼如下: entry key=areasInfoAdapter bean parent=abstractHibernate30Ada

      Mysql數據庫提供兩種類型的索引,如果沒正確設置,索引的利用效率會大打折扣卻完全不知問題出在這。

      復制代碼 代碼如下:
      CREATE TABLE test (
      id INT NOT NULL,
      last_name CHAR(30) NOT NULL,
      first_name CHAR(30) NOT NULL,
      PRIMARY KEY (id),
      INDEX name (last_name,first_name)
      );


      以上創建的其實是一個多列索引,創建列索引的代碼如下:

      復制代碼 代碼如下:
      CREATE TABLE test (
      id INT NOT NULL,
      last_name CHAR(30) NOT NULL,
      first_name CHAR(30) NOT NULL,
      PRIMARY KEY (id),
      INDEX name (last_name),
      INDEX_2 name (first_name)
      );


      一個多列索引可以認為是包含通過合并(concatenate)索引列值創建的值的一個排序數組。 當查詢語句的條件中包含last_name 和 first_name時,例如:

      復制代碼 代碼如下:
      SELECT * FROM test WHERE last_name='Kun' AND first_name='Li';


      sql 會先過濾出last_name符合條件的記錄,在其基礎上在過濾first_name符合條件的記錄。那如果我們分別在last_name和 first_name上創建兩個列索引,mysql的處理方式就不一樣了,它會選擇一個最嚴格的索引來進行檢索,可以理解為檢索能力最強的那個索引來檢 索,另外一個利用不上了,這樣效果就不如多列索引了。

      但是多列索引的利用也是需要條件的,以下形式的查詢語句能夠利用上多列索引:

      復制代碼 代碼如下:
      SELECT * FROM test WHERE last_name='Widenius';
      SELECT * FROM test WHERE last_name='Widenius' AND first_name='Michael';
      SELECT * FROM test WHERE last_name='Widenius' AND (first_name='Michael' OR first_name='Monty');
      SELECT * FROM test WHERE last_name='Widenius' AND first_name >='M' AND first_name < 'N';


      以下形式的查詢語句利用不上多列索引:

      復制代碼 代碼如下:
      SELECT * FROM test WHERE first_name='Michael';
      SELECT * FROM test WHERE last_name='Widenius' OR first_name='Michael';


      多列建索引比對每個列分別建索引更有優勢,因為索引建立得越多就越占磁盤空間,在更新數據的時候速度會更慢。
      另外建立多列索引時,順序也是需要注意的,應該將嚴格的索引放在前面,這樣篩選的力度會更大,效率更高。

      分享:Mysql建表與索引使用規范詳解
      本篇文章是對Mysql建表和索引使用規范進行了詳細的分析介紹,需要的朋友參考下 一、 MySQL建表,字段需設置為非空,需設置字段默認值。 二、 MySQL建表,字段需NULL時,需設置字段默認值,默認值不為NULL。 三、 MySQL建表,如果字段等價于外鍵,應在該字段加索引。 四

      來源:模板無憂//所屬分類:MySQL教程/更新時間:2013-07-01
      相關MySQL教程