sql - SELECT * FROM table WHERE x IN (...几百个整数...)

标签 sql mysql indexing in-clause

表有大约 800 万行。 X 有一个非唯一索引。

显示索引,它表明在表中有一个键名 X 上的非唯一索引,“seq_in_index”为 1,排序规则 A,基数 7850780,sub_part NULL,packed NULL,index_type BTREE。

不过,此查询可能需要 5 秒才能运行。整数列表来自另一个系统,我不允许将它们存储在表中,因为它们代表社交网络上的友谊。

有没有比大量 IN 语句更快的方法?

最佳答案

您可以将 ID 列表转换为临时表(如果 MySql 支持,则为 table-var)并加入其中。

该表只会在查询时存在,因此您实际上并没有存储任何东西到表中。

关于sql - SELECT * FROM table WHERE x IN (...几百个整数...),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/623577/

相关文章:

sql - 何时选择通过SQL/语义存储解决方案选择Cassandra?

mysql - 获取列数 MySQL

php - 验证或不验证 where 子句中的列

java - 在 neo4j 中,如何按日期索引并在日期范围内搜索?

mysql - 使用 Left Join 和子查询优化 MySQL 查询

java - SQL注入(inject)和可能的攻击

sql - Oracle - 从 SYS_REFCURSOR 中选择 pl sql

mysql - 如何检查列值是否不为空,然后使用 sql 查询检查下一列

php - 从上次插入表中获取 ID

c++ - 指针索引 : Getting Unexpected Values