【发布时间】:2010-04-19 15:29:35
【问题描述】:
我对一个非常大的数据库进行了一系列查询,并且在 WHERE 子句中有数十万个 OR。优化此类 SQL 查询的最佳和最简单的方法是什么?我发现了一些关于创建临时表和使用连接的文章,但我不确定。我是严肃 SQL 的新手,一直在将结果从一个剪切和粘贴到另一个。
SELECT doc_id, language, author, title FROM doc_text WHERE language='fr' OR language='es'
SELECT doc_id, ref_id FROM doc_ref WHERE doc_id=1234567 OR doc_id=1234570 OR doc_id=1234572 OR doc_id=1234596 OR OR OR ...
SELECT ref_id, location_id FROM ref_master WHERE ref_id=098765 OR ref_id=987654 OR ref_id=876543 OR OR OR ...
SELECT location_id, location_display_name FROM location
SELECT doc_id, index_code, FROM doc_index WHERE doc_id=1234567 OR doc_id=1234570 OR doc_id=1234572 OR doc_id=1234596 OR OR OR x100,000
这些未优化的查询每个可能需要超过 24 小时。干杯。
【问题讨论】: