mysql - 可以指示 MySQL/Postgres 忽略索引或列吗?

标签 mysql postgresql database-schema

有什么方法可以指示MySQL不使用索引,即使它可用?同样,即使列可用也不使用它? (例如,只需在查询中显示“列不存在”错误即可。)在准备删除索引或字段时,拥有此功能会很有用。

Postgres 怎么样?

最佳答案

免责声明:仅限 PostgreSQL...8 年多没有使用过 MySQL。

此外,您似乎没有针对查询,但我想我无论如何都会提供它(也许对于有类似问题的任何人)。

这有点像黑客,但如果您考虑下表:

create table foo (
  id integer 
);

create index foo_ix1 on foo (id);

insert into foo generate_series (1, 1000000);

正如您所料,这将使用索引:

explain
select * from foo
where id between 5 and 10;

除非您有针对该特定函数的基于函数的索引,否则将任何函数应用于列都会使规划器无法使用该索引。简单的例子:

explain
select * from foo
where id + 0 between 5 and 10;

我没有更改结果,但我强制进行了全面扫描。

例如,对于文本列,您可以只附加一个空字符串:text_field || ''

关于mysql - 可以指示 MySQL/Postgres 忽略索引或列吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66605673/

相关文章:

php - 根据帖子 ID 检索标签

sql - “Relation” 与 RDBMS/SQL 中的 “relationship”?

postgresql - zsh : command not found: pg_dump on mac OS Big Sur

sql - 定义返回多列的 Postgres SQL-lang 函数的正确方法是什么?

php - redis中如何使用sortable数据结构

c# - MySQL 连接器连接重用

python - 检查python下是否存在postgresql表(可能还有Psycopg2)

mysql - Sumifs SQL 表匹配行值

php - MySQL查询无法读取PHP变量

mysql - 复制,uuid 字段作为主键,基于行的复制