乙個查詢是否存在記錄的sql.如下:
select count(*) from table_a where condition = ***x;
這是乙個全表的檢索.如果只是查詢是否存在記錄是否有更快的辦法.
select 1 from table_a where condition = ***x and rownum =1;
資料量不大的情況下count(*)和下面的sql查詢差別不大.(幾毫秒的差別.多數是跟其他因素有關係)
網上的資料很多說的是oracle.但是應該大部分的資料庫都一樣.
如果資料量足夠龐大.查詢次數特別多.比如:1w條的資料在乙個100w條的資料庫裡逐個驗證.
上面不同的查詢語句能看出明顯的效率高低.
count(*)效率較低.
但是也有比較特殊的情況.
當要查詢的記錄放置在資料庫比較底層的位置的時候.
count(*)花費的時間和後一種sql文的花費時間差不多.
專案中壓力測試的時候就遇到乙個奇怪的問題.
當用我們的資料跑的時候.3分鐘能執行完.客戶的資料卻要跑幾十分鐘.
後來調查發現.客戶的資料比較舊.似乎是放置在資料庫底層的位置.每次查詢幾乎都要查詢完全表資料才能找到.
所以效率大大降低.
只好採用別的方法提高程式的效率.
sqlserver查詢執行過的SQL記錄
說明 僅支援sql server2008及以上版本 declare starttime datetime,endtime datetime set starttime 2020 10 14 00 00 00 set endtime 2020 10 15 00 00 00 select top 100...
sql查詢語句速度
查詢一張百萬資料量的資料庫表,已經建立了索引 flowno。因為匯出日誌備份需要,要求根據flowno的值取出資料。即,select部分的語句如下 對比了以下三種where查詢子句的執行速度 1.where t.flowno between 2017031400 and 2017031410 查詢1...
MySQL 影響SQL查詢速度
客戶端傳送sql請求給mysql伺服器 mysql伺服器會在查詢快取中進行檢查,檢視是否可以在查詢快取中命中 服務端會對sql進行解析 預處理再由優化器生成對應的執行計畫 根據執行計畫,呼叫儲存引擎中的api來查詢資料 將查詢的資料返回給客戶端,必要的時候進行快取過濾 如果查詢快取開關是開啟的會優先...