postgresql ilike /like 和upper/lower
postgresql 是大小写敏感的,所以要不你强制使用大写或小写,要不使用ilike,或者使用upper/lower先强制转换字段值为大小或小写 。实际测试(相对而言,在80万记录中查询,均没有使用索引,应该也用不了。虽然这里barcode/box_barcode可以使用upper建立索引的
CREATE INDEX tabindex ON tab (upper(col));
)
(barcode) like '%9M0AB%' or (box_barcode) like '%9M0AB%' 591毫秒
(barcode) ilike '%9M0AB%' or (box_barcode) ilike '%9M0AB%' 3070毫秒
upper(barcode) like '%9M0AB%' or upper (box_barcode) like '%9M0AB%' 1865毫秒
所以,ilike 慎重使用,upper/lower 会是比较折衷的方案