SQL

如何使用数千个WHERE子句优化SQL查询

发布于 2021-07-06 11:14:04

我对一个非常大的大型数据库进行了一系列查询,并且在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个小时以上。干杯。

关注者
0
被浏览
54
1 个回答
  • 面试哥
    面试哥 2021-07-06
    为面试而生,有面试问题,就找面试哥。

    我想我只是回答了我自己的问题…嵌套表格!

    SELECT doc_text.doc_id, doc_text.language, doc_text.author, doc_text.title, doc_ref.ref_id, ref_master.location_id, location.location_display_name, doc_index.doc_id, doc_index.display_heading
    FROM DOC_TEXT, DOC_REF, REF_MASTER, LOCATION, DOC_INDEX
    WHERE
    聽聽聽 doc_text.language='fr' OR doc_text.language='es'
    AND
    聽聽聽 doc_text.doc_id=doc_ref.doc_id
    AND
    聽聽聽 doc_ref.doc_id=ref_master.ref_id
    AND
    聽聽聽 ref_master.location_id=location.location_id
    AND
    聽聽聽 doc_text.doc_id=doc_index.doc_id
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看