小编xan*_*ngr的帖子

从 GIN 索引的 TSVECTOR 列获取部分匹配

我想通过查询得到结果:

SELECT * FROM (
  SELECT id, subject
  FROM mailboxes
  WHERE tsv @@ plainto_tsquery('avail')
) AS t1 ORDER by id DESC;
Run Code Online (Sandbox Code Playgroud)

这有效并返回tsv包含包含的行Available。但是如果我使用avai(dropped lable) 它找不到任何东西。

所有查询都必须在字典中吗?我们不能只查询这样的字母吗?我有一个包含电子邮件正文(内容)的数据库,我希望随着它每秒增长而使其快速增长。目前我正在使用

... WHERE content ~* 'letters`
Run Code Online (Sandbox Code Playgroud)

postgresql full-text-search pattern-matching

17
推荐指数
1
解决办法
2万
查看次数

如何加快对地理位置过程的查询

我有一个包含 10,301,390 个 GPS 记录、城市、国家和 IP 地址块的表。我有用户当前的经纬度位置。我创建了这个查询:

SELECT
  *, point(45.1013021, 46.3021011) <@> point(latitude, longitude) :: point AS distance
FROM
  locs
WHERE
  (
    point(45.1013021, 46.3021011) <@> point(latitude, longitude)
  ) < 10 -- radius
ORDER BY
  distance LIMIT 1;
Run Code Online (Sandbox Code Playgroud)

这个查询成功地给了我我想要的东西,但它很慢。根据给定的纬度和经度,获得一条记录需要 2 到 3 秒。

我在latitudelongitude列上尝试了 B 树索引,也尝试过,GIST( point(latitude, longitude));但查询仍然很慢。

我怎样才能加快这个查询?

更新:

似乎缓慢是由 引起的,ORDER BY但我想获得最短距离,所以问题仍然存在。

postgresql index spatial gist-index

5
推荐指数
1
解决办法
5761
查看次数

为什么我得到旧数据?

今天我在PostgreSQL 9.5上发现了一些奇怪的东西。(我不知道这是否是因为测试版。)当我想获取数据时,我会从查询中获取旧的和已删除的数据。VACUUM FULL然后我做,然后我得到正确的数据(这是空的)。

我在这里错过了什么吗?PostgreSQL 返回旧数据的原因可能是什么?

注意:自动真空是ON.

postgresql concurrency transaction isolation-level postgresql-9.5

4
推荐指数
1
解决办法
1255
查看次数