CREATE TABLE 属性 ( ID VARCHAR(40)、 タイプ VARCHAR(16)、 データ VARCHAR(2048)、 PRIMARY KEY(id,タイプ) );
これは、実行しようとしているクエリの一般的な形式です。一般的な考え方は、「オブジェクト」には一意の ID があり、JavaScript オブジェクトのようにキーと値のペアがあるというものです。
SELECT a1.id、a1.data、a2.data、a3.data、a4.data、a6.data FROM 属性 a1、属性 a2、属性 a3、属性 a4、属性 a5 LEFT JOIN 属性 a6 ON (a6.id=a5.id AND a6.type = 'Foreign Id') WHERE a1.id=a2.id AND a1.id=a3.id AND a1.id=a4.id AND a1.id=a5.id AND a1.type = '名' AND a2.type = 'ミドルネーム' AND a3.type = '姓' AND a4.type = 'タイムスタンプ' AND a5.type = 'Count' AND a5.data = 'MY_ID'
このクエリ'Foreign Id'
では、オプションの属性です。問題は、私が得ていることです
SELECT は MAX_JOIN_SIZE を超える行を調べます。WHERE を確認し、SELECT が問題ない場合は SET SQL_BIG_SELECTS=1 または SET MAX_JOIN_SIZE=# を使用します。
言われたとおりにできることはわかっていますが、警告は、このクエリがひどく非効率的であることを心配しています。クエリを作成するより良い方法はありますか?