mysql - 索引限制使用表的规则 - MySQL

标签 mysql indexing

我有一个包含 8 列的混合数据类型(int、text、varchar 等)的表

此表只有一个对其进行操作的查询(SELECT),并且在该查询中它使用 4 个“AND”语句来过滤结果。

我的问题是:在这种情况下建立索引有哪些准则?

在我的例子中,读取时间比写入时间具有更高的优先级,所以我应该索引出现在 AND 子句中的所有列吗?我应该只索引整数吗?

最佳答案

对于一个查询,创建一个包含所有受影响的列的索引。

MySQL 的索引从左到右工作,这意味着如果您有一个包含以下列的表:

A varchar(255)
B varchar(50)
C int(11)
D datetime

KEY index (A,B,C,D) 上的索引意味着 MySQL 将从左到右查找查询中的列。如果您将它们全部包含在您的查询中,它将全部使用它们,但如果您只包含 AB,它将在应用其余部分之前使用它们来过滤结果剩余结果集的条件(假设您使用的是 AND)。

但是,如果您只包含 CD,它根本不会使用该索引,因为它不知道要在 A< 中查找什么.

关于mysql - 索引限制使用表的规则 - MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4739659/

相关文章:

mysql - 编辑 MySql 数据库记录

MySQL 子查询简单的 SELECT 问题

mysql - 如何从表中删除外键?

javascript - 将列索引转换为对应的列字母

ios - tableView 索引和 NSArray objectAtIndex 之间的冲突

phpmyadmin返回查询结果但php返回0

php - 关闭选项卡后更新数据库中的注销时间

mysql - 使用基本连接进行多个值的 sql 查询

python - 如何使用基于整数位置的索引访问 MultiIndex 数据框中的行

indexing - Apache Cassandra 。二级索引的优缺点