于是开始找原因,当然google是最好的帮手了。
结合InstallGuide的说明,发现原来与locale设置有关,解决了locale设置之后发现索引真的有效了,不过比较有趣
的事情是,GP的处理方式也是>= AND <这个事情是很有意思的,不过也好理解,因为index通常有效的运算符就是
= > < != >< >= <=等,对于like的处理,GP的办法是这样的:
当locale设置合理时,GP就知道所有的符号如何排序,知道B>A,且对所有汉字有效,于是等效处理方式就派上用场了。
我们看一下explain的效果:
explain
select * from testtb where clm like '中华%和%';
"Gather Motion 2:1 (slice1; segments: 2) (cost=0.00..204.27 rows=268 width=15)"
" -> Index Scan using testtb_idx_clm on testtb (cost=0.00..204.27 rows=268 width=15)"
" Index Cond: clm::text >= '中华'::character varying AND clm::text < '中协'::character varying"
" Filter: clm::text ~~ '中华%和%'::text"
select ascii('协'),ascii('华');
21327;21326
声明:文中观点为作者的个人观点、不代表官方、如需更多帮助,请联系Pivotal官方·转载必须注明出处
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/11022757/viewspace-719832/ ,如需转载,请注明出处,否则将追究法律责任。