检查相同值集中的多个列的值

时间:2016-09-13 21:46:21

标签: sql database join apache-spark-sql

我正在尝试找到一种优化查询性能的有效方法。你能以不同的方式向我推荐吗?

目前我正在运行像

这样的查询
<table class="table table-striped table-condensed">
  <thead>
    <tr>
      <th>ID</th>
      <th>Name</th>
      <th>Email</th>
      <th>Username</th>
    </tr>
  </thead>
  <tbody>
    <% @users.each do |user| %>
      <tr>
        <td class="id"><%= user.id %></td>
        <td class="name"><%= link_to user.name, user %></td>
        <td class="email"><%= user.base_name %></td>
        <td class="username"><%= user.username %></td>
      </tr>
    <% end %>
  </tbody>
</table>

现在这很慢。 我想改进以下部分查询。

SELECT  a.col1, b.colX
    FROM TableA a
    INNER JOIN TableB b
    ON a.a1Key=b.b1Key
    WHERE
       a.col2 in (select test from TableC)
    OR a.col3 in (select test from TableC)
    OR a.col4 in (select test from TableC)
    OR a.col5 in (select test from TableC)
    OR a.col6 in (select test from TableC)
    OR a.col7 in (select test from TableC)
    OR a.col8 in (select test from TableC)

1 个答案:

答案 0 :(得分:1)

包含另一个JOINTableC类似的

SELECT  a.col1, b.colX
    FROM TableA a
    INNER JOIN TableB b
    ON a.a1Key=b.b1Key
    JOIN TableC c 
    ON c.test IN (a.col2, a.col3, a.col4, a.col5, a.col6, a.col7, a.col8);