原文在這邊
http://www.ichiayi.com/wiki/tech/psql_tips小弟因為公司有在網站上做活動, 會發送序號
而序號每批都會不同, 前批的序號又不能刪除
如果前批沒發完, 下次發時要把前批也一起混在裡面發
所以序號的table裡, 有一個欄位是批號(varchar 50)
批號多為SNA001 ~ SNA999
或是SNB001 ~ SNB999
所以在php裡,我使用select時, 都會使用WHERE 批號 LIKE 'SNA%'
所以cost都不少, 其他部份都蠻快的, 就這部份很花時間
然後也加了index, 但是explain後, 沒有看到它有去使用index
上網查文章, 上面文章的前輩, 他在index裡,多增加了varchar_pattern_ops
原本我的批號是
CREATE INDEX "card_item_shipto_index" ON "public"."card_item"
USING btree ("shipto");
把這index刪掉後, 重新create index為
CREATE INDEX "card_item_shipto_index" ON "public"."card_item"
USING btree ("shipto" varchar_pattern_ops);
原本cost從13xxxx.xx 變為 39806.08
網頁跑一次, 真的變快了, 原本做一次, 網頁要跑4~5秒, 現在2~3秒就有result了
跟大家分享一下!