上周我写了Oracle处理前%的文章,我后来研究了一下PostgreSQL的反向索引。建立表qq,表结构如下:
重点是建立一个反向索引。 create index q2 on qq ( reverse(b) collate "C"); 这里开始建立不顺,和几位PG大佬交流了一下。这里的写法和Oracle有所不同。多了collate "C"
注意这里的B列的数据类型是字符串。如果在a列上这样做是报错的,因为a列是int型的。
最终SQL是:select * from qq where reverse (b) like reverse('%1234');
查看执行计划,用到了索引。看最终实现也符合预期。这个索引和SQL在实现上和Oracle是一模一样。当然这里数据也要多一些,10几条是不行的,这个也和Oracle差不多,一般都是1万多条数据起作用。
MySQL的话十几条数据就能模拟出全表或者是使用索引。
