<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之旅 廣告
                ## MySQL專題五:sql優化 [TOC] > 本文主要討論在數據庫等級上的優化方法,參考[數據庫等級上優化](https://docs.oracle.com/cd/E17952_01/mysql-8.0-en/optimize-overview.html) ### 5.1.SQL語句[優化](https://docs.oracle.com/cd/E17952_01/mysql-8.0-en/statement-optimization.html) #### 5.1.1. 查詢SELECT語句優化 - 對`WHERE`子句中的Column考慮是否可以添加索引Index - 使用LIKE子句時,避免使用通配符`%`作為字符串常量的開始,`LIKE %fun%` #### 5.1.2. 插入INSERT語句優化 - 插入多條記錄時,使用多個VALUES列表一次插入,代替多條插入語句 如下面: VALUES列表插入 ~~~ INSERT INTO table0 ( field1, field2 ) VALUES ( value1, value2), ( value2, value3); ~~~ 多條插入語句 ~~~ INSERT INTO table0 ( field1, field2 ) VALUES ( value1, value2); ~~~ ~~~ INSERT INTO table0 ( field1, field2 ) VALUES ( value2, value3); ~~~ - 從文本文件向表中插入數據時,使用[LOAD DATA](https://docs.oracle.com/cd/E17952_01/mysql-8.0-en/load-data.html),而不是插入[INSERT](https://docs.oracle.com/cd/E17952_01/mysql-8.0-en/insert.html)語句 - 列多使用缺省值,減少了MYSQL的轉換,僅當要插入的值與默認值不同時才顯式插入值 #### 5.1.3. 更新UPDATE語句優化 - 延遲更新,一次執行多個更新 ### 5.2. 索引[優化](https://docs.oracle.com/cd/E17952_01/mysql-8.0-en/optimization-indexes.html) 建立索引加快了數據查詢的速度,如果一個索引都沒有,查詢一個數據就得**全表查找**,從表中第一個記錄查找,知道找到滿足條件的記錄或者到表中最后一個記錄也沒有找到滿足條件的記錄,全表查找時間隨著表的記錄增長會越來越長。 同時數據的插入、更新、刪除操作,索引都需要更新,因此需要找到一個平衡點,實現最佳索引查詢。 #### 5.2.1. Primary Key優化 Mysql默認會為Primary Key的Column建立索引 - 考慮重要字段作為主鍵 - 如果沒有明顯重要字段,考慮創建一個單獨的列并使用自動增長值作為主鍵 #### 5.2.2. Foreign Key優化 - 如果一張表中列很多,考慮將表中不常用的數據分離成一張或多張單獨的分表,并將主表中的主鍵復制到分表中。 ### 5.3. 數據庫結構[優化](https://docs.oracle.com/cd/E17952_01/mysql-8.0-en/optimizing-database-structure.html) - 盡可能使用最小的數據類型,如MEDIUMINT通常是比INT更好的選擇,因為MEDIUMINT列使用的空間減少了25% - 盡可能聲明列不為空,使用默認值代替 - 對于可以表示為字符串或數字的唯一id或其他值,首選的應該是數字列而不是字符串列 - 對于大小小于8KB的列值,請使用VARCHAR而不是BLOB - 在InnoDB表中使用隨機生成的值作為主鍵時,如果可能的話,在它前面加上一個升序值,例如當前日期和時間。當連續的主值物理存儲在彼此附近時,InnoDB可以更快地插入和檢索它們 - 存儲包含文本數據的大blob時,考慮先壓縮數據
                  <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>

                              哎呀哎呀视频在线观看