隨筆 - 154  文章 - 60  trackbacks - 0
          <2008年2月>
          272829303112
          3456789
          10111213141516
          17181920212223
          2425262728291
          2345678

          聲明:

          該blog是為了收集資料,認識朋友,學習、提高技術,所以本blog的內容除非聲明,否則一律為轉載??!

          感謝那些公開自己技術成果的高人們?。?!

          支持開源,尊重他人的勞動!!

          常用鏈接

          留言簿(3)

          隨筆分類(148)

          隨筆檔案(143)

          收藏夾(2)

          其他

          學習(技術)

          觀察思考(非技術)

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          MYSQL使用索引的方法
          作者:vicki 2006-12-05 16:46:51
          標簽:
           
          如何建立索引
           
          · 索引通常被用于提高WHERE條件的數據行匹配或者執行聯結操作時匹配其它表的數據行的搜索速度。所以我們選擇索引的列也通常選擇出現在WHERE子句、join子句、ORDER BY或GROUP BY子句中的列。
          · 選擇索引時,需要考慮數據列的基數。所謂基數,是指數據列所包含的不同的數據的個數。如果基數相對于數據表行數較高的話,索引的效果比較好。換句話說,就是指數據列的不同的值越多,索引效果越好。如果一個數據列只包含:0或者1兩個值的話,索引的用處就不大。如果值出現的幾率幾乎相等,那么無論搜索哪個值都可能得到一半的數據行。在這些情況下,最好根本不要使用索引。
          · 索引值較短的值,所選擇的數據類型也盡可能的要小一些。譬如:如果TEXT能滿足需求的話,我們就不需要用MEDIUTEXT。
          · 如果建立聯合索引的話,譬如對:t1,t2,t3建立聯合索引的話,同時也是對t1和t1,t2建立了索引。但是如果單獨指定t2、t3、t1t3、t2t3的值的話,都會用不到索引。
           
          sql語句中如何避免沒有使用索引的情況
           
          首先先了解一下mysql優化器的工作原理:MySQL查詢優化器最主要的目標是盡可能地使用索引,并且使用最嚴格的索引來消除盡可能多的數據行。所以當我們提交查詢語句時,如果優化器排除不符合條件的數據的速度越快,那么查詢的結果也會越快。
          ·盡量比較數據類型相同的數據列。例如,INT與BIGINT是不同的。CHAR(10)被認為是CHAR(10)或VARCHAR(10),但是與CHAR(12)或VARCHAR(12)不同。
          ·盡量不要在where子句中對索引列使用表達式或者函數。如果你在索引列使用函數調用或者更復雜的算術表達式,MySQL就不會使用索引,因為它必須計算出每個數據行的表達式值。
             WHERE mycol < 4 / 2 使用索引
             WHERE mycol * 2 < 4 沒有使用索引
          · 在使用LIKE時,盡量不要在開頭使用通配符。
              WHERE col_name LIKE ’%string%’
              WHERE col_name LIKE ’abc%’
          · 不要使用類型轉換。如果某個索引列是int型,而在查詢時,賦值為字符型,將使用不了索引。
              SELECT * FROM mytbl WHERE num_col = 1;使用索引
              SELECT * FROM mytbl WHERE num_col = ‘1’;沒有使用索引
          ·在SELECT語句中可以使用STRAIGHT_JOIN關鍵字來重載優化器的選擇。
              SELECT STRAIGHT_JOIN ... FROM t1, t2, t3 ... ;
              SELECT ... FROM t1 STRAIGHT_JOIN t2 STRAIGHT_JOIN t3 ... ;


          http://blog.sina.com.cn/s/reader_46599af7010006rv.html
          posted on 2008-02-01 16:08 lk 閱讀(3089) 評論(0)  編輯  收藏 所屬分類: DB
          主站蜘蛛池模板: 乡城县| 富裕县| 松江区| 青田县| 台南县| 收藏| 静安区| 亳州市| 通城县| 沂南县| 双牌县| 威信县| 来安县| 和顺县| 民乐县| 沁阳市| 元江| 临湘市| 科尔| 溆浦县| 津南区| 桐庐县| 万宁市| 云林县| 武夷山市| 临沧市| 五家渠市| 大足县| 斗六市| 高尔夫| 五河县| 宿州市| 万载县| 海阳市| 荥阳市| 淮安市| 漾濞| 越西县| 武城县| 娄烦县| 合阳县|