Sql-Server
Azure SQL 只讀表索引
我正在嘗試為我被迫與 Azure SQL 一起使用的稍微奇怪的模式製定最佳索引策略。
- 每天從 ADF 刪除、重新創建和載入表格並載入新數據
- 表在載入後只讀。
- 表格可以超過 2000 萬行和 50 多列寬。
- 表架構可能每天都在變化,因此刪除並重新創建
因為我事先不知道完整的架構。我正在向每個表添加一個代理標識列並在此列上創建一個聚集主鍵。
但是,密鑰創建最多需要 15 分鐘,並且表在創建過程中被鎖定 - 這是一個問題……
所以-也許我把這些桌子堆成一堆?忘記代理鍵並創建非聚集索引,因為創建不會鎖定表。
我錯過的堆有什麼不好的影響嗎?我可以不用聚集索引\鍵嗎?
我希望這是有道理的——如果不把問題寫成 2 頁長的話,就有點難以理解了….
通過刪除表,您應該避免 SQL Server 在某些情況下對堆執行 DELETE 時不釋放儲存的弱點。
通過不執行 UPDATE,您應該避免在堆中轉髮指針的弱點。
通過在聚集表而不是堆中創建,這為您在該表上的 SELECT 查詢留下了潛在優勢。為了解決該主題,我們需要您擁有(或考慮)的查詢和索引。這裡沒有通用規則,都是關於訪問模式的。據我所見,在查詢方面,一般來說,使它成為一個聚集表並沒有什麼“神奇”優勢,所以你可以逐個處理這種情況(SELECT by SELECT 以及你如何處理那些關於索引創建的性能調整ETC)。
當然,我可能會忘記一些明顯的事情……