0

クエリ用に一度に3つのテーブルを選択しようとしています。各テーブルに返される行数を決定するための最良の方法を知りたいのですが。

これを個別に行うと、私は

SELECT * from tableA  
SELECT * from tableB  
SELECT * from tableC  

このようにすると、各選択で返される行数を確認できます。成功したこれらすべてを一度に選択したいのですが、返されたテーブルごとに結果を取得する方法を知りたいです。以下のクエリ例:

SELECT * from tableA ta WHERE id=100  
SELECT * from tableB tb where pid=100  
SELECT * from tableC tc where cid = 100

これを行うだけの問題ですか?

SELECT (count(id) from tableA where id=100) as count_tableA,  
SELECT * from tableA ta WHERE id=100,    
SELECT (count(pid) from tableB where id=100) as count_tableB,   
SELECT * from tableB tb where pid=100,  
SELECT (count(id) from tableB where cid=100) as count_tableC,  
SELECT * from tableC tc where cid = 100  

全体的な目標は、毎回3つのクエリを回避することでパフォーマンスを向上させることですが、それを使用して、返される各テーブルから取得する行数を分離する必要があります。

4

1 に答える 1

0

まあ、あなたは本当にクエリを避けることはできません。行を取得するには、各テーブルにクエリを実行する必要があります。これには、全表スキャンが必要です。

tableA(id)、、、tableB(id)およびにインデックスを作成することで、カウントを最適化できますtableC(cid)

アプリケーション層の行をフェッチし、後でカウントすることもできます。

クエリの構文が正しくありません。おそらくあなたは意味します:

select (SELECT count(id) from tableA where id=100) as count_tableA,  a.*
from TableA
where id = 100;

等々。

于 2013-03-25T18:26:23.610 に答える