1. 程式人生 > 資料庫 >Mysql 查詢優化,排序,特殊使用等-年度總結

Mysql 查詢優化,排序,特殊使用等-年度總結

一.優化

1.資料表聯查優化

                            1.先執行where過濾,再聯查;
                            2.合適的組合索引,
                            3.欄位值:
                                1)儘量使用數字型別
                                2)設定預設值,避免where使用欄位 = null;
                            4.慎用某些關鍵字/字元(in,!=,*),適當使用exists/not exists;

2.limit的優化

    普通:
           SELECT * FROM table1 WHERE `key` >1000000 LIMIT 100000,5;
     內聯 :a表內聯-臨時表(使用a表 limit得出的結果集)
           SELECT * FROM table1 a
           INNER JOIN (SELECT `key` AS id FROM table1 WHERE `key` >1000000 LIMIT       100000,5 ) b ON a.`key` = b .id;

3.排序優化:
                                

  1)儘量使用索引的正序排序,不單獨使用order by

  2)使用索引排序時:組合索引-結合where欄位的索引和排序欄位索引

 

二.查詢結果集排序的序號

       SELECT @rank:=@rank + 1 AS rank_no                   //@rank 臨時變數,@rank:=@rank + 1 初始值+1
       FROM 
                 (SELECT 表字段 FROM 表名 ORDER BY `key` DESC ) a,//結果集排序
                 (SELECT @rank:= 0) b//臨時變數初始值

三.其他

1.指定一個自增主鍵的初始值

     alter table tbname auto_increment = x;

2.lpad((str,len,padstr))

         用字串 padstr對 str進行左邊填補直至它的長度達到 len個字元長度,然後返回str,如果str的長度長於len,那麼它將被截除到len個字元;

3.給定一個日期,返回一個天數

        TO_DAYS(date)

4.判斷某個欄位的值是否包含指定的字串

        INSTR(filed,字串)

5.replace into  : 已有此行資料(根據主鍵或者唯一索引判斷)替換

 

6.java專案中mysql jar包升級6.0 後需修改資料來源配置  


     1.<property name="driverClassName" value="com.mysql.cj.jdbc.Driver"></property> 
     2.url 多加時區配置 serverTimezone=GMT%2B8