0

私は名前の配列を持っています:

 $names = array('ray'=>0,'bob'=>1,'sue'=>2,'jeff'=>3);

次に、配列内の各キーワード間の関係を格納するテーブルがあります。

+----------+----------+
|  id_a    |   id_b   |
+----------+----------+
|   0      |    1     |
+----------+----------+
|   0      |    2     |
+----------+----------+
|   0      |    3     |
+----------+----------+
|   1      |    2     |
+----------+----------+
|   1      |    3     |
+----------+----------+
|   2      |    3     |
+----------+----------+

現時点で、関係を保存する私の機能は次のとおりです。

    foreach($names as $name=>$id_a){
        foreach($names as $n2=>$id_b){
            if($name != $n2){
                INSERT INTO relationships (id_a,id_b) VALUES ($id_a,$id_b);
            }
        }
        array_shift($names);
    }

このタイプのアクションを処理するためのより高速な SQL ソリューションがあるかどうか疑問に思っていますか?

4

1 に答える 1

1

最初に挿入された値の配列を構築してから、単一のクエリですべてを挿入できます。その方が速いでしょう。クエリは次のようになります...

INSERT INTO relationships (id_a, id_b) VALUES (0, 1), (0, 2), (0, 3);
于 2012-06-14T22:13:23.393 に答える