相关疑难解决方法(0)

PostgreSQL LIKE查询性能变化

关于LIKE查询数据库中特定表的响应时间,我看到了相当大的变化.有时我会在200-400毫秒内得到结果(非常可接受),但有时候返回结果可能需要30秒.

我知道LIKE查询是非常耗费资源的,但我只是不明白为什么响应时间会有这么大的差异.我已经在该owner1字段上构建了一个btree索引,但我认为这对LIKE查询没有帮助.有人有主意吗?

示例SQL:

SELECT gid, owner1 FORM parcels
WHERE owner1 ILIKE '%someones name%' LIMIT 10
Run Code Online (Sandbox Code Playgroud)

我也尝试过:

SELECT gid, owner1 FROM parcels
WHERE lower(owner1) LIKE lower('%someones name%') LIMIT 10
Run Code Online (Sandbox Code Playgroud)

和:

SELECT gid, owner1 FROM parcels
WHERE lower(owner1) LIKE lower('someones name%') LIMIT 10
Run Code Online (Sandbox Code Playgroud)

有类似的结果.
表行数:约95,000.

postgresql indexing query-optimization pattern-matching sql-like

103
推荐指数
3
解决办法
7万
查看次数

如何删除Postgres中表的所有索引?

我一直有这个问题:我有一个表上需要删除的20个索引才能进行测试.删除表不会丢弃所有这些元数据.

似乎没有通配符drop index ix_table_*或任何有用的命令.你可以编写的psql周围似乎有一些bash循环.
必须有更好的东西!思考?

postgresql indexing ddl metadata dynamic-sql

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

Postgresql运算符类"varchar_pattern_ops"不接受数据类型整数

我正在尝试将我的数据id postgresql从字符串迁移到django中的整数,以便在sphinx搜索中使用它们.首先,我正在进行数据迁移,将数据转换为字符串整数

db.execute('''UPDATE the_table SET foo='1' WHERE foo='bar';''')
Run Code Online (Sandbox Code Playgroud)

然后我正在进行架构迁移

ALTER TABLE the_table ALTER COLUMN col_name TYPE integer USING (col_name::integer);
Run Code Online (Sandbox Code Playgroud)

就像在这里被告知的那样

但是我收到了一个错误

错误:运算符类"varchar_pattern_ops"不接受数据类型整数

SQL-состояние:42804

South和pgAdmin都会发生此错误.数据是正确的 - 字符串类型为Null或整数.我究竟做错了什么?

sql django postgresql

8
推荐指数
2
解决办法
4563
查看次数

如何获取 PostgreSQL 中表上所有索引的列名列表?

我有这个查询来获取表上的索引列表:

SELECT
    ns.nspname as schema_name,
    tab.relname as table_name,
    cls.relname as index_name,
    am.amname as index_type,
    idx.indisprimary as is_primary,
    idx.indisunique as is_unique
FROM
    pg_index idx
INNER JOIN pg_class cls ON cls.oid=idx.indexrelid
INNER JOIN pg_class tab ON tab.oid=idx.indrelid
INNER JOIN pg_am am ON am.oid=cls.relam
INNER JOIN pg_namespace ns on ns.oid=tab.relnamespace
WHERE ns.nspname = @Schema AND tab.relname = @Name
Run Code Online (Sandbox Code Playgroud)

它似乎工作正常。但现在我需要对列列表进行查询,但我无法理解系统视图的工作方式。

具体来说,我正在寻找的是:

  • [用于匹配第一个查询的索引名称或 id]
  • 索引中的顺序
  • 列名
  • 上升或下降
  • 排序列或包含列

理想情况下,我想一次获得给定表的所有索引的上述项目。


请注意,我正在寻找的不仅仅是列名。

postgresql database-metadata database-indexes

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