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

查看MySQL 時區: show variables like ‘%time_zone%’;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章