pgsql模糊查询不走索引及嵌套事务

1 后置模糊查询不走索引

糊匹配条件如 LIKE "血常规%",可以发现查询计划生成如下,索引并没有被使用上,这是因为传统的btree索引并不支持模糊匹配   查阅文档后发现,pgsql可以在Btree索引上指定操作符:text_pattern_ops、varchar_pattern_ops和 bpchar_pattern_ops,它们分别对应字段类型text、varchar和 char,官方解释为“它们与默认操作符类的区别是值的比较是严格按照字符进行而不是根据区域相关的排序规则。这使得这些操作符类适合于当一个数据库没有使用标准“C”区域时被使用在涉及模式匹配表达式(LIKE或POSIX正则表达式)的查询中

CREATE INDEX lab_report_report_name_index ON lab.lab_report (report_name varchar_pattern_ops);

2 PG不支持嵌套事务

一个事务里面有update或for update操作,然后在这个事务里面新开事务后,再对这个事进行更新就会造成数据库事务死锁。

你可能感兴趣的:(pgsql模糊查询不走索引及嵌套事务)