<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                索引的目的在于提高查詢效率. 索引的類型: * UNIQUE(唯一索引):不可以出現相同的值,可以有NULL值 * INDEX(普通索引):允許出現相同的索引內容 * PROMARY KEY(主鍵索引):不允許出現相同的值 * fulltext index(全文索引):可以針對值中的某個單詞,但效率確實不敢恭維 * 組合索引:實質上是將多個字段建到一個索引里,列值的組合必須唯一 索引雖然好處很多,但過多的使用索引可能帶來相反的問題,索引也是有缺點的: * 雖然索引大大提高了查詢速度,同時卻會降低更新表的速度,如對表進行INSERT,UPDATE和DELETE。因為更新表時,mysql不僅要保存數據,還要保存一下索引文件. * 建立索引會占用磁盤空間的索引文件。一般情況這個問題不太嚴重,但如果你在要給大表上建了多種組合索引,索引文件會膨脹很寬, 索引只是提高效率的一個方式,如果mysql有大數據量的表,就要花時間研究建立最優的索引,或優化查詢語句。 使用索引時,有一些技巧: * 索引不會包含有NULL的列 只要列中包含有NULL值,都將不會被包含在索引中,復合索引中只要有一列含有NULL值,那么這一列對于此符合索引就是無效的。 * 使用短索引 對串列進行索引,如果可以就應該指定一個前綴長度。例如,如果有一個char(255)的列,如果在前10個或20個字符內,多數值是唯一的,那么就不要對整個列進行索引。短索引不僅可以提高查詢速度而且可以節省磁盤空間和I/O操作。 * 索引列排序 mysql查詢只使用一個索引,因此如果where子句中已經使用了索引的話,那么order by中的列是不會使用索引的。因此數據庫默認排序可以符合要求的情況下不要使用排序操作,盡量不要包含多個列的排序,如果需要最好給這些列建復合索引。 * like語句操作 一般情況下不鼓勵使用like操作,如果非使用不可,注意正確的使用方式。`like ‘%aaa%’`不會使用索引,而`like ‘aaa%’`可以使用索引。 * 不要在列上進行運算 * 不使用`NOT IN`、`<>`、`!=`操作,但`<`,`<=`,`=`,`>`,`>=`,BETWEEN,IN是可以用到索引的 * 索引要建立在經常進行select操作的字段上。 這是因為,如果這些列很少用到,那么有無索引并不能明顯改變查詢速度。相反,由于增加了索引,反而降低了系統的維護速度和增大了空間需求。 * 索引要建立在值比較唯一的字段上。 * 對于那些定義為text、image和bit數據類型的列不應該增加索引。因為這些列的數據量要么相當大,要么取值很少。 * 在where和join中出現的列需要建立索引。 * where的查詢條件里有不等號(where column != …),mysql將無法使用索引。 * 如果where字句的查詢條件里使用了函數(如:where DAY(column)=…),mysql將無法使用索引。 * 在join操作中(需要從多個數據表提取數據時),mysql只有在主鍵和外鍵的數據類型相同時才能使用索引,否則及時建立了索引也不會使用。 組合索引的作用: 1. 減少開銷。 建一個組合索引(col1,col2,col3),實際相當于建了(col1),(col1,col2),(col1,col2,col3)三個索引。每多一個索引,都會增加寫操作的開銷和磁盤空間的開銷。 對于大量數據的表,使用組合索引會大大的減少開銷。 2. 覆蓋索引。 通常指一個查詢語句的執行只用從索引中就能夠取得,不必從數據表中讀取。也可以稱之為實現了索引覆蓋。 對組合索引(col1,col2,col3),如果有如下的`sql: select col1,col2,col3 from test where col1=1 and col2=2`。 那么MySQL可以直接通過遍歷索引取得數據,而無需回表,這減少了很多的隨機io操作。減少io操作,特別的隨機io其實是dba主要的優化策略。 所以,在真正的實際應用中,覆蓋索引是主要的提升性能的優化手段之一。 3. 效率高。 索引列越多,通過索引篩選出的數據越快。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看