使用show profiles分析sql效能。
show profiles是5.0.37之後新增的,要想使用此功能,要確保版本在5.0.37之後。
mysql> select version();
mysql> show profiles;
empty set (0.02 sec)
mysql> show variables like "%pro%";
可以看到profiling 預設是off的。
開啟profile
mysql> set profiling=1;
把資料寫入到資料庫的時,常常會碰到先要檢測要插入的記錄是否存在,然後決定是否要寫入。
最直觀的辦法,就是在**裡執行一次全表查詢,然後根據查詢結果是否為空決定下一步操作,這樣顯然非常耗費效能。
下面是幾種效能較好的查詢方法。
然後讀取count(*)的值判斷記錄是否存在。對於這種方法效能上有些浪費,我們只是想判斷記錄記錄是否存在,沒有必要全部都查出來。
然後讀取語句執行所影響的行數。
當然這裡limit 1很重要。這要mysql找到一條記錄後就不會在往下找了。這裡執行所影響的行數不是0就是1,效能提高了不少。
如果你用的是pdo,可以用rowcount(),很容易就都到執行所影響的行數。
只能判斷是否存在記錄,子查詢中的select *在執行時會被忽略掉。
以上三種方法,在mysql中測試,資料量一百萬左右,差距不是特別大,
其中,速度最快的是使用下面的格式查詢,
大家在以後的查詢中可以參考上面的方法。
參考 檢視mysql語句執行時間的2種方法
mysql查詢sql耗時瓶頸show profiles
mysql 判斷是否存在資料的4種方法
mybatis使用pagehelper分頁外掛程式
第一步 引入jar com.github.pagehelper pagehelper 4.1.6 com.github.jsqlparser jsqlparser 0.9.1 第二步 在mybatis核心配置檔案mybatis config.xml中配置外掛程式 interceptor com.gi...
SpringBoot使用logback分類收集日記
將所有日誌都儲存在乙個檔案中既不利於排查問題,同時檔案大小也會隨著應用的執行越來越大,正確的做法應該是將error日誌和其他日誌分開,並且不同級別的日誌根據時間進行記錄儲存 springboot框架內建了logback和slf4j框架,所以不需要在新增任何相關依賴避免衝突 分類收集日誌的核心就是日誌...
django使用 Paginator 實現分頁功能
在 django 中使用 paginator 可以很方便的實現分頁功能,下面就通過乙個具體的例子來講講如何使用 paginator。from django.core.paginator import paginator from django.core.paginator import emptyp...