一个巨大的SQL语句或许多小型SQL语句?
问题描述:
我有一个场景,我需要检查10,000个不同的特定名称,并对照大约60,000个记录名称的表格。假设缓存不相关,一般来说,出于性能目的,它是更好的:一个巨大的SQL语句或许多小型SQL语句?
(1)分解成迷你查询,以便每个查询可能有200个不同的名称?
或
(2)收件10,000一个mongocious SQL语句 “OR” 的条款?
答
第一个观察结果是,通常RDBMS对查询字符串的大小有限制,您可能会用这么多的OR来超出查询字符串的大小。
所以一个解决方案是编写一个存储过程并在循环中完成。
忽略这一点,考虑到情况(1)数据访问次数比情况(2)多,后者更可取。
答
或#4 - 批量使用IN()查询。关于1000通常工作得很好:
SELECT * FROM表WHERE名称( 'STR1', 'str2的', 'STR3',...)
它并不完美,但有没有涉及临时表, MySQL对于优化IN()很不错。
你错过了第3号:完全以另一种方式完成。我会将列表写入单独的表/临时表或其他内容,然后使用连接进行过滤。 – 2012-08-15 22:48:11
@JonEgerton发布它作为答案? – kapa 2012-08-15 22:54:27
@bažmegakapa:现在有。 – 2012-08-15 22:57:29