mysql sql優化
阿新 • • 發佈:2017-06-06
ner jdbc連接 htm database 提升 第一個 記錄 blog bat
記錄一些經驗,主要是結論。建檢索等就不寫了,地球人都知道。
1. 對比2個join
select * from (select * from A where age > 10) inner join (select * from B where grade > 3) tb on A.b_id = tb.id; select * from (select * from A where age > 10) inner join B on A.b_id = B.id and B.grade > 3;
當B的id字段為主鍵或索引時,如果數據量達到千萬級時,第二條比第一條sql可能快上10倍以上,因為第一個sql裏tb沒有索引。
2. jdbc連接mysql插入數據,使用批量插入可提升8倍以上性能。有兩個點需要關註:
(1)數據庫連接需要加上“rewriteBatchedStatements=true”,否則jdbc不會真正使用批量插入。
(2)如果mysql有主從,註意每次批量插入的數量不要太多,防止失敗。
3. 觀察mysql執行的sql
用tail -f查看即可,sql執行日誌文件路徑在my.cnf文件中general_log_file定義。
4. 使用explain
詳解參見 http://database.51cto.com/art/200912/168453.htm
mysql sql優化