相关疑难解决方法(0)

快速找到与PostgreSQL相似的字符串

我需要在表中创建类似字符串的排名.

我有下表

create table names (
name character varying(255)
);
Run Code Online (Sandbox Code Playgroud)

目前,我正在使用提供该功能的pg_trgm模块similarity,但我遇到了效率问题.我创建了一个像Postgres手册建议的索引:

CREATE INDEX trgm_idx ON names USING gist (name gist_trgm_ops);
Run Code Online (Sandbox Code Playgroud)

我正在执行以下查询:

select (similarity(n1.name, n2.name)) as sim, n1.name, n2.name
from names n1, names n2
where n1.name != n2.name and similarity(n1.name, n2.name) > .8
order by sim desc;
Run Code Online (Sandbox Code Playgroud)

查询有效,但是当你有数百个名字时,它确实很慢.此外,也许我忘了一点SQL,但我不明白为什么我不能使用条件and sim > .8没有得到"列sim不存在"错误.

我想要任何提示使查询更快.

sql postgresql text similarity postgresql-performance

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

pq:抱歉,已经有太多客户了

多次pq: sorry, too many clients already调用时出现错误GetMessages()

请找到更新的代码:

main() 代码

func main() {
  dbConn, err := InitDB()
  if err != nil {
    Log.Error("Connection Error: ", err.Error())
    return
  }
  defer dbConn.Close()
  go run()
  var input string
  fmt.Scanln(&input)
}
Run Code Online (Sandbox Code Playgroud)

数据库连接代码为:

func InitDB()(*sql.DB, error) {
  connectionString := fmt.Sprintf("user=%v password='%v' dbname=%v sslmode=disable", USER, PASSWORD, DATABASE)
  db, err = sql.Open(DRIVER, connectionString)
  return db, err
}
Run Code Online (Sandbox Code Playgroud)

run 协程:

func run() {
  for {
    messages, err := GetMessages()
    if err != nil {
      Log.Error("Connection …
Run Code Online (Sandbox Code Playgroud)

postgresql go

11
推荐指数
1
解决办法
9272
查看次数

使用SELECT语句查询自定义postgresql参数

在另一个问题中,有人询问如何SHOW search_path;使用SELECT查询查询postgresql运行时参数(例如).在答案中,有人建议使用

SELECT * FROM pg_settings WHERE name = 'search_path';
Run Code Online (Sandbox Code Playgroud)

这很好用,但如何在扩展中定义自定义参数呢?(请参阅有关自定义选项的文档 ).

例:

SET abc.my_var = 1;
SHOW abc.my_var;
Run Code Online (Sandbox Code Playgroud)

输出

1
Run Code Online (Sandbox Code Playgroud)

SELECT * FROM pg_settings WHERE name = 'abc.my_var';
Run Code Online (Sandbox Code Playgroud)

不返回任何行.是否有其他表/视图我可以使用SELECT语句查询我的自定义参数?

sql database postgresql settings

6
推荐指数
1
解决办法
1396
查看次数

如何使用Postgres查询窗口中的参数测试我的临时SQL

在Microsoft SQL Server中,要在查询窗口中测试类似的内容:

select * from Users where LastName = @lastname
Run Code Online (Sandbox Code Playgroud)

我可以在命令之前添加这个:

declare @lastname varchar(16)
set @lastname = 'Troy'
Run Code Online (Sandbox Code Playgroud)

但是在PostgreSQL中,我找不到类似的方法.似乎我唯一能做的就是直接用它的值替换参数名称.当ad-hoc查询变得复杂并且多次使用相同的参数时,它变得很难.有办法吗?

sql postgresql parameterized-query

5
推荐指数
2
解决办法
1930
查看次数