美好的一天,Postgres按字符分區前綴
我想檢查什麼是最好的方式是在列前綴上分割Postgres表。我有一個大表(+ - 750萬行×10列),我想它在列的前綴1 數據看起來像分區:
ABCDEF1xxxxxxxx
ABCDEF1xxxxxxxy
ABCDEF1xxxxxxxz
ABCDEF2xxxxxxxx
ABCDEF2xxxxxxxy
ABCDEF2xxxxxxxz
ABCDEF3xxxxxxxx
ABCDEF3xxxxxxxz
ABCDEF4xxxxxxxx
ABCDEF4xxxxxxxy
他們唯一有史以來10將分區即ABCDEF0 ...-> ABCDEF9 ...
什麼我做目前是作出這樣的表:
CREATE TABLE public.mydata_ABCDEF1 (
CHECK (col1 like 'ABCDEF1%')
) INHERITS (public.mydata);
CREATE TABLE public.mydata_ABCDEF2 (
CHECK (col1 like 'ABCDEF2%')
) INHERITS (public.mydata);
等,然後用類似的邏輯觸發:
IF (NEW.col1 like 'ABCDEF1%') THEN
INSERT INTO public.mydata_ABCDEF1 VALUES (NEW.*);
ELSIF (NEW.imsi like 'ABCDEF2%') THEN
INSERT INTO public.simdata_ABCDEF2 VALUES (NEW.*);
我擔心如果以這種方式分區會加快查詢時間?或者如果我應該考慮在substr上進行分區(不知道如何),或者我應該在該列上創建一個帶有前綴和分區的新列?
任何建議表示讚賞。
是的,我打算索引「分區」表一旦數據被填充。我的問題更多的是如果使用「LIKE」分隔這個「字符」字段是最好的方法。 – QuickPrototype