相关疑难解决方法(0)

PostgreSQL 中 LIKE、SIMILAR TO 或正则表达式的模式匹配

我必须编写一个简单的查询,在其中查找以 B 或 D 开头的人名:

SELECT s.name 
FROM spelers s 
WHERE s.name LIKE 'B%' OR s.name LIKE 'D%'
ORDER BY 1
Run Code Online (Sandbox Code Playgroud)

我想知道是否有办法重写它以提高性能。所以我可以避免or和/或like

postgresql index regular-expression pattern-matching string-searching

123
推荐指数
3
解决办法
18万
查看次数

LIKE 是如何实现的?

谁能解释一下 LIKE 运算符是如何在当前数据库系统(例如 MySQL 或 Postgres)中实现的?或者指出一些解释它的参考资料?

天真的方法是检查每条记录,在感兴趣的字段上执行正则表达式或部分字符串匹配,但我有一种感觉(希望)这些系统做一些更聪明的事情。

mysql postgresql performance full-text-search pattern-matching

24
推荐指数
3
解决办法
1万
查看次数

text_pattern_ops 和 COLLATE "C" 之间有区别吗?

name例如,如果我有一个带有排序规则的文本列tr-TR,并且我运行一个查询

SELECT * FROM t WHERE name LIKE 'a%'
Run Code Online (Sandbox Code Playgroud)

然后这将进行 seq 扫描。

如果我现在创建一个索引

CREATE INDEX ON t(name text_pattern_ops)
Run Code Online (Sandbox Code Playgroud)

上面的查询将变成位图扫描。但还有另一种技术可以达到相同的结果:

CREATE INDEX ON t(name COLLATE "C")
Run Code Online (Sandbox Code Playgroud)

这些方法完全等同还是存在差异?

postgresql index collation

3
推荐指数
1
解决办法
3527
查看次数