标签: database-indexes

确定mysql中索引的状态

我在一张有3500万条记录的桌子上创建了一个新索引,现在已经运行了将近1天.以前当我创建索引花了20分钟时,然而有些列是浮动的.新的idnex在varchar(45)上

我使用了processlist命令,该命令显示索引创建仍在使用以下输出

65417 | Repair with keycache | CREATE INDEX insert_index on checkins(dateinserted)
Run Code Online (Sandbox Code Playgroud)

我想知道是否有人可以给我建议,以查明查询是否真的死了,只是坐在进程列表中.也许在某个阶段出现了问题,我不知道.

谢谢

mysql database database-indexes

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

SQL Server 支持哈希索引吗?

所有索引都在SQL Server B Tree中吗?
主键和外键肯定应该是基于哈希的索引吗?

sql-server database-indexes

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

如何快速检测和解决数据库的SQL Server索引碎片?

我遇到过这样一种情况:随着更多记录的添加,我对许多SQL Server数据库表的数据库操作变得非常缓慢(单个插入到具有100万条记录的表的5s).

我估计这可能是由于我的数据库中表的碎片索引,因为我有许多表使用(并且需要使用)主键聚簇索引的uniqueidentifier类型.

我如何评估是否是这种情况,如果存在任何碎片问题,如何解决碎片问题(可能每次部署一次)?

我想要一个适用于SQL Server 2005及更高版本的解决方案(我在Azure数据库(12.0.2000.8)中专门使用SQL Server).

sql sql-server fragmentation database-indexes azure-sql-database

4
推荐指数
2
解决办法
3178
查看次数

为什么 PostgreSQL 不使用 trigram 索引

我创建了一个 trigram 索引,以便执行带有 'like %text%' 条件的查询,但 PostgreSQL 9.6 不使用该索引来执行查询。

CREATE EXTENSION pg_trgm;  

CREATE INDEX tb_estabelecimento_index08
  ON tb_estabelecimento
  USING gin
  (nm_estabelecimento COLLATE pg_catalog."default" 
  gin_trgm_ops);
Run Code Online (Sandbox Code Playgroud)

当我执行查询时:

SELECT * FROM tb_estabelecimento WHERE 
nm_estabelecimento LIKE '%SOMETEXT%'
Run Code Online (Sandbox Code Playgroud)

PostgreSQL 给我查询计划:

Seq Scan on tb_estabelecimento  (cost=0.00..1.16 
rows=1 width=1706)
Filter: ((nm_estabelecimento)::text ~~                
'%SOMETEXT%'::text)"
Run Code Online (Sandbox Code Playgroud)

为什么 PostgreSQL 执行顺序扫描而不是使用索引?

我的表:

CREATE TABLE tb_estabelecimento
(
  id_estabelecimento integer NOT NULL,
  nm_estabelecimento character varying(100) NOT NULL, 
  ds_url_website character varying(1000), 
  nm_municipio character varying(200), 
  id_unidade_federacao integer NOT NULL,
  CONSTRAINT tb_estabelecimento_pk PRIMARY KEY (id_estabelecimento),
  CONSTRAINT tb_estabelecimento_uk UNIQUE …
Run Code Online (Sandbox Code Playgroud)

postgresql database-indexes

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

无法删除 postgres 中的索引,因为它不存在

在 postgres 数据库中,我有一个唯一约束和为其创建的两个唯一索引。我使用以下查询删除了约束:

alter table my_schema.users drop constraint users_dept_uk
Run Code Online (Sandbox Code Playgroud)

它已删除约束和一个索引,但第二个索引仍然存在。

以下查询仍然告诉我索引存在:

SELECT r.relname, r.relkind, n.nspname
FROM pg_class r INNER JOIN pg_namespace n ON r.relnamespace = n.oid
WHERE r.relname = 'users_dept_idx';
Run Code Online (Sandbox Code Playgroud)

它给出以下输出:

users_dept_idx, i, my_schema
Run Code Online (Sandbox Code Playgroud)

当我执行下面的查询时:

drop index my_schema.users_dept_idx
Run Code Online (Sandbox Code Playgroud)

我收到错误:

sqlalchemy.exc.ProgrammingError: (psycopg2.errors.UndefinedObject) index "users_dept_idx" does not exist
Run Code Online (Sandbox Code Playgroud)

我在这里缺少什么?由于我不再需要这个索引,无法删除它也无法插入数据。

postgresql database-indexes

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

MySQL Error: Index column size too large. The maximum column size is 767 bytes

I've unsuccessfully been through the AWS forum and Stack Overflow trying to find a solution to the following error: Index column size too large. The maximum column size is 767 bytes

I am running a WordPress website with 1.5M records in the postmeta table. I recently added an index to the postmeta table, and all was testing ok. However I had an incident with my server today (botnet scan dwindled my RDS credits), and restarted both my Lightsail instance and …

mysql database-indexes

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

Postgres Select ILIKE %text% 在大字符串行上运行缓慢

我有一个只有 7 列的表,其中一列存储每一行​​的长文本数据。该文本列数据的平均字符长度约为 1500 个字符。该表有 500.000 行。

当我使用选择查询而不使用该文本列时,没有问题,查询按预期需要 10 秒。

但是,如果我将这个长文本列添加到我的查询中,则Select * from table_1需要 3 或 4 分钟才能完成此查询并使用数据适配器填充数据表。

为什么我需要查找所有长文本列记录?因为我需要对其使用文本过滤器,例如:

SELECT * 
FROM table_1 
WHERE longtextcolumn ILIKE ANY (ARRAY['%texttosearch1%', '%texttosearch2%'])
Run Code Online (Sandbox Code Playgroud)

我应该做什么来加快这一进程?表分区可以解决这个速度问题吗?或者我应该寻找索引?

sql postgresql query-optimization database-indexes trigram

4
推荐指数
2
解决办法
6261
查看次数

如果在Oracle中不存在,如何创建和索引?

有没有办法在oracle中创建索引只有它们不存在?

就像是

CREATE INDEX IF NOT EXISTS ord_customer_ix
   ON orders (customer_id);
Run Code Online (Sandbox Code Playgroud)

oracle database-indexes

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

如何获取 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
查看次数

Postgres。通过将 BIGINT 切换为 INT 我可以期待良好的加速吗

这个 Postgres 数据库拥有各种大小的表,最多可达 1000 万行。几乎所有的都有一个 BIGINT 主键,从 1 开始计数。

由于 BIGINT 是 64 位,但 1000 万行完全在 INT 的 20 亿最大值之内,因此是否值得将这些 BIGINT 列转换为 INT(32 位)和 SMALLINT(16 位)以加速某些重型 SQL?更紧凑地存储索引/表应该会给我们带来更高的缓存命中率。如果有的话,我能期望多少加速?不使用 BIGINT 有什么缺点吗?(假设达到 INT/SMALLINT 的最大值永远不会成为问题)

database postgresql database-indexes

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