這開始爲this question,但現在看起來更合適,因爲我意識到這是一個DTU相關問題。簡單選擇計數(id)使用100%的Azure SQL DTUs
基本上,運行:
select count(id) from mytable
編輯:添加一個條款似乎不能幫助。
正在運行8到30分鐘之間(而在SQL Server的本地副本相同的查詢需要大約4 秒)。
下面是我運行此查詢時Azure門戶中的MONITOR選項卡的屏幕截圖。注意我在沒有觸及數據庫大約一週後才做了此事,而Azure報告我僅使用了我的DTU的1%。
一對夫婦的多餘的東西:
- 在這個特殊的測試,查詢了08:27S運行。
- 當它運行時,上面的圖表實際上顯示了一段時間內的DTU線爲100%。
- 數據庫配置了具有S1性能級別的標準服務層。
- 該數據庫大約3.3GB,這是最大的表(計數返回約2,000,000)。
我欣賞它可能只是我的理解有限,但如果有人能澄清,如果這是真的預期的行爲(即簡單的計數這麼長時間運行,並刷爆我的DTU),這將是大加讚賞。
在原來的問題的答案已經覆蓋會發生什麼。 「簡單」計數實際上是人爲設計的,價格昂貴,必須掃描整個表格。 *不要那樣做*。如果您有一個使用索引字段的WHERE子句,優化器將使用索引查找操作,從而獲得更好的性能。 seek在計算總數之前讀取索引B-Tree以找到匹配的行(即遠小於IO,更好的速度)。如果你使用高選擇性的字段,你將不得不閱讀更少的索引頁面。 – 2014-10-07 08:40:51
只是FTR,'簡單'計數不是人爲的 - 這是我需要做的/沒有各種where子句。 – chrisb 2014-10-30 08:27:29
你有沒有得到一個令人滿意的答案,爲什麼發生這種情況?我看到,在一個擁有5.5億行單個表的127GB數據庫上,S2(50 DTU)的功能與此相同,count(1)接近一個小時。 – 2017-06-02 21:02:47