-1

あなたの助けを求めるために来ています。次のデータを使用して、以下の表を検討してください。

DROP SCHEMA IF EXISTS `jointest`;
CREATE SCHEMA `jointest`;
USE `jointest`;

CREATE TABLE x ( id INT PRIMARY KEY AUTO_INCREMENT , field VARCHAR(20));
CREATE TABLE z ( id INT PRIMARY KEY AUTO_INCREMENT, field VARCHAR(20));
CREATE TABLE y ( id_x INT, id_z INT, PRIMARY KEY (id_x, id_z) );

INSERT INTO x VALUES (NULL,"Good Morning,"), (NULL,"Good Night,"), (NULL,"Bye");
INSERT INTO z VALUES (NULL, "Dad"), (NULL, "Mom"), (NULL, "Bro!");
INSERT INTO y(id_x, id_z) values(1,1), (1,2), (1,3), (2,1), (2,2), (3,3);

テーブルx、zからデータをクエリするためのより良いソリューションはありますか?近くに何かあると思います

SELECT x.field, z.field
FROM y
  INNER JOIN x ON (y.id_x = x.id)
  INNER JOIN z ON (y.id_z = z.id)
ORDER BY x.id;

助けてくれてありがとう!

4

1 に答える 1

1

MySQLにはクエリオプティマイザが組み込まれているため、テーブルと結合の順序は関係ありません。使用する結合のタイプの選択はパフォーマンスの問題ではなく、1を返す結果に依存します。

確実なクエリパフォーマンスを得るには、適切な列にインデックスを追加することも重要です。

于 2013-03-02T05:00:57.043 に答える