Sql-Server

Azure SQL 只讀表索引

  • August 16, 2021

我正在嘗試為我被迫與 Azure SQL 一起使用的稍微奇怪的模式製定最佳索引策略。

  • 每天從 ADF 刪除、重新創建和載入表格並載入新數據
  • 表在載入後只讀。
  • 表格可以超過 2000 萬行和 50 多列寬。
  • 表架構可能每天都在變化,因此刪除並重新創建

因為我事先不知道完整的架構。我正在向每個表添加一個代理標識列並在此列上創建一個聚集主鍵。

但是,密鑰創建最多需要 15 分鐘,並且表在創建過程中被鎖定 - 這是一個問題……

所以-也許我把這些桌子堆成一堆?忘記代理鍵並創建非聚集索引,因為創建不會鎖定表。

我錯過的堆有什麼不好的影響嗎?我可以不用聚集索引\鍵嗎?

我希望這是有道理的——如果不把問題寫成 2 頁長的話,就有點難以理解了….

通過刪除表,您應該避免 SQL Server 在某些情況下對堆執行 DELETE 時不釋放儲存的弱點。

通過不執行 UPDATE,您應該避免在堆中轉髮指針的弱點。

通過在聚集表而不是堆中創建,這為您在該表上的 SELECT 查詢留下了潛在優勢。為了解決該主題,我們需要您擁有(或考慮)的查詢和索引。這裡沒有通用規則,都是關於訪問模式的。據我所見,在查詢方面,一般來說,使它成為一個聚集表並沒有什麼“神奇”優勢,所以你可以逐個處理這種情況(SELECT by SELECT 以及你如何處理那些關於索引創建的性能調整ETC)。

當然,我可能會忘記一些明顯的事情……

引用自:https://dba.stackexchange.com/questions/298100