,

CRUD Explorer サポートページ

subglobal1 link | subglobal1 link | subglobal1 link | subglobal1 link | subglobal1 link | subglobal1 link | subglobal1 link
subglobal2 link | subglobal2 link | subglobal2 link | subglobal2 link | subglobal2 link | subglobal2 link | subglobal2 link
subglobal3 link | subglobal3 link | subglobal3 link | subglobal3 link | subglobal3 link | subglobal3 link | subglobal3 link
subglobal4 link | subglobal4 link | subglobal4 link | subglobal4 link | subglobal4 link | subglobal4 link | subglobal4 link
subglobal5 link | subglobal5 link | subglobal5 link | subglobal5 link | subglobal5 link | subglobal5 link | subglobal5 link
subglobal6 link | subglobal6 link | subglobal6 link | subglobal6 link | subglobal6 link | subglobal6 link | subglobal6 link
subglobal7 link | subglobal7 link | subglobal7 link | subglobal7 link | subglobal7 link | subglobal7 link | subglobal7 link
subglobal8 link | subglobal8 link | subglobal8 link | subglobal8 link | subglobal8 link | subglobal8 link | subglobal8 link

複雑なSQLも怖くない

複雑なSQLも怖くない

システムが複雑になればなるほど、SQLも複雑になる傾向にあるのではないでしょうか。
また、SQLの上級者になればなるほど、少ないクエリーで多くの処理を実現しようとします。
SQLを組み立てているときは処理内容を十分に理解しているので問題ありませんが、開発してから時間が経ってから見ると、何をやっているかさっぱりわからない、といった経験がある方も少なくないのではないでしょうか。また、他人が作成した複雑なSQLを理解するのは大変です。
SQLを複雑にする要因としては、サブクエリーやUNIONの利用があります。サブクエリーやUNIONは、何階層でも入れ子にできるため、さらに複雑さが増します。

CRUD Explorerの「クエリー分析」機能は、複雑なSQLを理解するための手助けとなることでしょう。
以下のSQLは、サブクエリー、スカラー副問い合わせ、UNIONを利用しており、一目でSQLの構造を理解することは難しいと思います。

SELECT
        a.department_id Department,
        a.num_emp / b.total_count Employees,
        a.sal_sum / b.total_sal Salary,
        (SELECT d.dept_name FROM dept d WHERE d.dept_id = a.dept_id) DepartmentName
FROM
    (SELECT e.department_id, COUNT ( * ) num_emp, SUM ( e.salary ) sal_sum FROM employees e GROUP BY e.department_id) a,
    (SELECT COUNT ( * ) total_count, SUM ( e.salary ) total_sal FROM employees e) b
ORDER BY
    a.department_id
UNION
SELECT
    e.department_id Department,
    e.num_emp Employees,
    e.sal_sum Salary,
    '' DepartmentName
FROM
    employees e
ORDER BY
    e.department_id
CRUD Explorerの「クエリー分析」画面で、クエリーを表示すると、以下のように表示できます。 (メイン画面から「クエリ解析ウィンドウ」を開き、上記SQLをクエリービューに貼り付け、「SQL解析」ボタンを押すと、動かしてみることができます)

左上のツリー表示部分には、クエリーの構造が表示されます。
クエリー本体は、UNIONで2つのクエリーを連結していることがわかります。%1%と%5%がUNIONで連結されている2つのサブクエリーです。
1つめのサブクエリー(%1%)は、3つのサブクエリーで構成されていることがわかります。DepartmentNameという別名が付けられたスカラー副問い合わせと、aとbの別名が付けられた2つのサブクエリーです。
このように、SQLの大枠の構造をツリーで視覚的に閲覧することができます。
トップレベルのノード(全体)を選択している場合、右側のクエリービュー部分には、SQL全体が表示されます。

ツリーで「本体」ノードを選択してみましょう。

トップレベル以外のノードを選択した場合、クエリービューにはその階層部分のみのSQLが表示されます。サブクエリを含む場合、別名に置き換えて表示されるため、クエリーの構造を把握する助けとなります。

次に、%1%のノードを選択してみましょう。

該当部分のSQLが表示されましたね。このように、着目したSQL部分のみの理解に注力することができます。
サブクエリ部分が全て隠蔽されてしまうと、逆に見通しが悪い場合があります。その場合、ツリーノードで右クリックメニューを表示して、「サブクエリの展開」を選択します。

当該クエリの下位のサブクエリーが全て展開して表示できます。


MailTo:WebMaster