我正在使用 MySQL 数据库引擎。我的 Java 应用程序使用简单的 JDBC 从数据库中检索数据。
我有以下数据库模式:有两列的主表:(INTEGER id,BLOB 数据)。id 是主键。
从用户操作中,我设置了几个我想要获取数据的 id(x,y,...所有整数)。
构建查询最有效的方法是什么?如果我使用,是否有任何性能差异
SELECT data FROM table WHERE id IN (x, y, ...)
或者
SELECT data FROM table WHERE id = x OR id = y OR ...
或者也许还有另一种方法来构建该查询?
首先,尝试将 id 放在一个查询中(无表查询)
看着它工作...
现在,将无表查询加入数据表
或者
试试看 !!!
我不确定 MySQL,但在 SQL Server 中,最有效的方法是设置一个临时表(例如使用表值参数作为存储过程的输入),然后进行表连接。执行“WHERE ... IN ...”通常是对每个结果进行表或索引扫描,这可能会慢一个数量级。您可以尝试使用 EXPLAIN 命令进行比较——我听说最新版本的 MySQL 对 EXPLAIN 有了很大改进。(不过,SQL Server 分析查询性能的图表要好得多。)