使用show profiles分析SQL效能

2021-09-22 07:33:47 字數 949 閱讀 7507

使用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...