关于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
我一直有这个问题:我有一个表上需要删除的20个索引才能进行测试.删除表不会丢弃所有这些元数据.
似乎没有通配符drop index ix_table_*或任何有用的命令.你可以编写的psql周围似乎有一些bash循环.
必须有更好的东西!思考?
我正在尝试将我的数据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或整数.我究竟做错了什么?
我有这个查询来获取表上的索引列表:
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)
它似乎工作正常。但现在我需要对列列表进行查询,但我无法理解系统视图的工作方式。
具体来说,我正在寻找的是:
理想情况下,我想一次获得给定表的所有索引的上述项目。
请注意,我正在寻找的不仅仅是列名。