我有一個場景。我的表格中有300條記錄。我執行一個查詢來獲得總數。然後,因爲我必須實現分頁,所以我使用根據計數的限制從同一個表中選擇數據。我在想如果我能在單個查詢中獲得計數和數據。 。在sql查詢中節省時間
我嘗試下面的代碼:
Select * ,count(*) as cnt from table;
但是,這給我的總數卻只有1個紀錄!
有沒有一種方法可以節省我在查詢中耗盡的時間,並在單個查詢中獲得結果?
我有一個場景。我的表格中有300條記錄。我執行一個查詢來獲得總數。然後,因爲我必須實現分頁,所以我使用根據計數的限制從同一個表中選擇數據。我在想如果我能在單個查詢中獲得計數和數據。 。在sql查詢中節省時間
我嘗試下面的代碼:
Select * ,count(*) as cnt from table;
但是,這給我的總數卻只有1個紀錄!
有沒有一種方法可以節省我在查詢中耗盡的時間,並在單個查詢中獲得結果?
類似:
select t1.*,t2.cnt
from table t1
cross join (select count(*) as cnt from table) t2
limit 'your limit for the first page'
或
select *,(select count(*) from table) as cnt
from table
limit 'your limit for the first page'
可以請你解釋第一次回答一次。我沒有那麼多的知識 – PSR 2013-03-14 13:55:59
我加入了它的計數表(一行一列的表)。我顯示來自第二個表的所有內容和計數。 – 2013-03-14 13:58:13
但是使用這個我將不得不每次都執行計數查詢。不是嗎? – 2013-03-15 05:32:57
你可以從你提到的數據結構中獲得信息,但是確實沒有理由這樣做。當您執行兩個查詢時沒有性能問題 - 一個用於獲取行數,另一個用於數據選擇。當您嘗試選擇一個查詢中的所有信息時,您不保存任何內容。做兩個簡單的查詢,它會是更好的解決方案 - 你會保持簡單和清晰。
如果您正在進行分頁,使用應用程序代碼(php,.net,coldfusion等)可能會使整個過程更加簡單。 – 2013-03-14 14:05:01
@DanBracuk - 應用程序代碼無法在「LIMIT」數據集上獲得全表計數。 – 2013-03-14 14:40:24