我有一個非常大的表(10多萬行),開始顯示查詢性能下降的跡象。由於這張表格的尺寸可能會很快增加一倍或三倍,我正在研究對錶格進行分區以擠出一些查詢性能。基於模數函數的SQL Server表分區?
表看起來是這樣的:
CREATE TABLE [my_data] (
[id] [int] IDENTITY(1,1) NOT NULL,
[topic_id] [int] NULL,
[data_value] [decimal](19, 5) NULL
)
所以,一堆對於任何給定主題值。此表上的查詢將始終按主題ID進行查詢,因此(id,topic_id)上有一個聚集索引。
無論如何,由於主題ID沒有限制(可以添加任意數量的主題)我想嘗試在主題ID的模函數上對此表進行分區。因此,像:
topic_id % 4 == 0 => partition 0
topic_id % 4 == 1 => partition 1
topic_id % 4 == 2 => partition 2
topic_id % 4 == 3 => partition 3
不過,我還沒有看到任何方式告訴「創建分區函數」或「創建分區方案」上的分區決定何時執行此操作。
這甚至可能嗎?我們如何根據對輸入值執行的操作來創建分區功能?
「在這個表上的查詢將永遠是按主題ID,所以(id,topic_id)上有一個聚集索引。「 (topic_id,id)上的聚集索引不會更有意義嗎? –
嗨馬克,對不起,確實索引是(ID,topic_id) – rusty