我有一個SQL Server數據庫與大量的數據(6500萬行主要是文本,總計8Gb)。數據每週只能更改一次。我有一個ASP.NET Web應用程序,它將對此數據運行多個SQL查詢,這些查詢將計算滿足各種條件的行數。由於數據每週只能更改一次,因此本週SQL存儲查詢和計數的最有效方法是什麼?我應該將它存儲在數據庫還是應用程序中?最有效的方法來存儲查詢和大型SQL數據計數
回答
如果數據每週只修改一次,作爲ETL過程的一部分和結束,請執行「基本」計數並將結果存儲在數據庫中的表中。此後,您可以查詢這些小型彙總表,而不是在大型表格上進行冗長的查詢。
查詢應根據複雜程度存儲爲存儲過程或視圖。
對於您的情況我會去了解一下indexed views.
他們讓你既保存查詢,結果像聚集的東西,否則不能被索引設置。
作爲獎勵,查詢優化器「知道」它也有這個數據,所以如果你檢查另一個查詢中存儲在視圖索引中的計數或其他東西(即使沒有直接引用視圖)也可以仍然使用存儲的數據。
索引視圖可以是非常有用的,但我認爲他們在這種情況下矯枉過正。 –
@Mitch - 也許。他沒有說他需要多長時間檢查一次這些總量或者有多少次,或者查詢結果有多少。 – JNK
如果你並不需要100%的正常運行,以一分鐘的準確的行數,你可以查詢SQL Server的內部信息:
Select so.name as 'TableName', si.rowcnt as 'RowCount'
from sysobjects so
inner join sysindexes si on so.id = si.id
where so.type = 'u' and indid < 2
非常快執行,並且不需要額外的表。在發生許多更新時不準確,但可能在您的預期用法中足夠準確。 [感謝你提意見!]
更新:做了一點挖掘的,這確實會產生準確計數(由於總和較慢,但仍快):
SELECT OBJECT_SCHEMA_NAME(ps.object_id) AS SchemaName,
OBJECT_NAME(ps.object_id) AS ObjectName,
SUM(ps.row_count) AS row_count
FROM sys.dm_db_partition_stats ps
JOIN sys.indexes i ON i.object_id = ps.object_id
AND i.index_id = ps.index_id
WHERE i.type_desc IN ('CLUSTERED','HEAP')
AND OBJECT_SCHEMA_NAME(ps.object_id) <> 'sys'
GROUP BY ps.object_id
ORDER BY OBJECT_NAME(ps.object_id), OBJECT_SCHEMA_NAME(ps.object_id)
Ref。
記住,存儲的計數的信息並不總是100%準確 在SQL Server 2000中關於2005年創建了一個新表 計數將是準確的。但是對於2000年存在的表,現在的 通過還原或更新駐留於2005年,則需要運行(移至2005年後僅運行一次 )sp_spaceused @updateusage = N'true'或帶有COUNT_ROWS的DBCC UPDATEUSAGE選項。
- 1. 查詢App Engine中數據存儲的最有效方法
- 2. 獲取AppEngine數據存儲查詢大小的最有效方法
- 3. SQL查詢來計算 「存儲數據的方式不同」
- 4. 最有效的方法來存儲大型base64字符串?
- 5. 在SQL Server中存儲大型數據集的最佳方法?
- 6. 的Oracle SQL:最有效的方法來計算分組數據
- 7. php&mysql:最有效的方法來檢查大型數組與數據庫
- 8. 最有效的方式來存儲和遍歷這些數據?
- 9. 在phpMyAdmin中存儲大型數據集的有效方法SQL表
- 10. 在MySQL中存儲和訪問巨大數據矩陣的最有效方法
- 11. 大數據:存儲和查詢
- 12. 大數據 - 存儲和查詢
- 13. 存儲和查詢大量數據
- 14. 什麼是最有效的方式來存儲這些數據?
- 15. 最有效的方式來存儲實時情緒數據
- 16. mongodb最有效的方式來存儲GPS跟蹤數據
- 17. 最有效的方式來存儲這些數據
- 18. 存儲大量JSON數據的最佳方法。 MS SQL? Raven DB?
- 19. 最有效的方法來存儲java對象大十六進制數字(MD5)
- 20. 在數據庫中存儲大量整數大數組的有效方法
- 21. 數據存儲最好的方法來存儲彙總的嵌套數據,以便更好地查詢
- 22. 選擇正確的模型來存儲和查詢數據?
- 23. 從存儲數據構建鏈表的最有效方法?
- 24. 臨時存儲/查詢數據的最佳方法?
- 25. 在Android中查詢大型數據集的最快方法
- 26. 用於存儲數字數據的最有效的Django模型
- 27. mySQL:最有效的方法來更新大型數據庫中的記錄?
- 28. 存儲大型數值多維數組的最佳方法
- 29. 在SQL Server數據庫中存儲GUID值的最有效方法
- 30. Android最好的方法來存儲和檢索數據列表
順便說一句,6500萬行和8GB的總數並不是真的那麼大...... –
MS SQL Server是否支持物化視圖?這將是一個想法。 (我做了一個快速搜索並找到[this](http://stackoverflow.com/questions/1527141/how-to-mimick-oracle-materialized-views-on-ms-sql-server)。) – bart