mysql - 如何强制 Mysql 在 IN 子句中使用主索引...?

标签 mysql sql indexing where-in

    Query1. SELECT * FROM traffic WHERE id IN (1904817,1904699,1882859);

    Query2. SELECT * FROM traffic WHERE id IN 
            (SELECT id FROM data_table where condition=1);

这里的流量表有近百万条记录,id为主键。

查询 1 使用索引 id

在 Query2 中它没有使用索引。

如何有效地运行 Query2...通过使用索引...

最佳答案

使用inner join代替IN并在条件列上创建另一个索引:

select t.* from traffic t
inner join data_table d on t.id = d.id and d.contition = 1

关于mysql - 如何强制 Mysql 在 IN 子句中使用主索引...?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10615839/

相关文章:

xampp - 在 CentOS 中运行 XAMPP 的 MySQLdump

mysql - Oracle to MySQL migration 关于语法差异的两个问题

arrays - 用于在 PostgreSQL 中搜索嵌套 JSONB 数组元素的索引

MySQL 60 天、90 天和每日流失率

单击名称时php mysql显示整个记录

mysql存储过程带参数问题

SQL 以 "round-robin"顺序返回行

sql - Flash 可以与 SQL 集成吗?

mysql - Coldfusion 输出变量作为数据库中的图像

sql-server - SQL 进行键查找而不是在索引列上查找