0
首先我使用的是postgres版本9.4。我想在此查詢創建一個部分索引Postgres如何獲取報價中的列
select DISTINCT ON(city,state)city,state,zip from zips where city ilike
'%' and state ilike '%' limit 10
我的問題是,我不知道放引號「%」,使得部分指數看起來像這樣
select DISTINCT ON(city,state)city,state,zip from zips where city ilike
'{city}%' and state ilike '{state}%' limit 10
內如何
列 將列放在單引號內的正確方法是什麼?我一直在尋找各地。現在我的部分指數看起來像這樣
CREATE INDEX "Location_Search"
ON zips (city ASC NULLS LAST, state ASC NULLS LAST)
where city ilike 'city%' and state ilike 'state%';
這是因爲Postgres的是治療「全市%」和狀態ILIKE「狀態%」作爲變量,而不是列顯然是沒有幫助。我有一個搜索框,用戶輸入城市和州的字段,所以我想優化。任何幫助,將不勝感激......
我不明白,爲什麼你認爲你需要一個部分索引。只需在每個列上創建一個索引,即「在zip(城市)上創建索引」和「在zip(州)上創建索引」。但是,一個條件'state ilike'%''將不會**使用索引,因爲它總是選擇所有行 –
即使定義了這樣一個索引,它也是無用的,因爲條件'city LIKE city ||'對於非空值,%''**總是** true。這是一種昂貴的寫作方式,「城市不是零」 –