我有一个带有自动递增整数主键的 MySQL 表。我想根据程序内存中的整数数组从表中获取一堆行。该数组的范围从少数到大约 1000 个项目。
获取行的最有效查询语法是什么?
我能想到几个:
- “SELECT * FROM thetable WHERE id IN (1, 2, 3, 4, 5)”(这就是我现在所做的)
- "SELECT * FROM thetable where id = 1 OR id = 2 OR id = 3"
- “SELECT * FROM thetable WHERE id = 1”形式的多个查询。可能对查询缓存最友好,但由于有大量查询解析而代价高昂。
- 一个联合,比如 "SELECT * FROM thetable WHERE id = 1 UNION SELECT * FROM thetable WHERE id = 2 ..." 我不确定 MySQL 是否缓存每个查询的结果;它也是最冗长的格式。
我认为在 MySQL 5.6+ 中使用 NoSQL 接口将是最有效的方法,但我还没有达到 MySQL 5.6。