[前][次][番号順一覧][スレッド一覧]

mysql:9785

From: ML account <ML account <ml@xxxxxxxxxx>>
Date: Tue, 06 Jul 2004 23:39:21 +0900
Subject: [mysql 09785] Re: EXCEPTのMysqlで代替方法。

 こんにちは。

ml_mysql@xxxxxxxxxxさんの
<4.2.0.58.J.20040706221822.05d01074@xxxxxxxxxx>
"[mysql 09784] EXCEPTのMysqlで代替方法。"


> 現在は、SELECT mail_address FROM table_b GROUP ON mail_address
> で 変数 $where に全て読み込んで、"aa@xxxxxxxxxx","bb@xxxxxxxxxx",……のようにし
> 
> SELECT * FROM table_a WHERE mail_address NOT IN "$where"
> 
> としていますが、

 なんか豪腕と言うか、凄いやり方を思いつきましたね。普通はこんなクエリで
やります。

    SELECT table_a.*
    FROM table_a LEFT JOIN table_b USING(mail_address)
    WHERE table_b.mail_address IS NULL;



 table_aとtable_bでmail_addressは重複するのでしょうか?また、それぞれの
テーブルで mail_addressは重複するのでしょうか?どちらかの答が重複するで
あり、その重複度が高いならば、正規形に持っていく事、テーブルの再設計を考
えた方が良いでしょう。
> table_a が約100万件、table_b が現在は数百件ですが、早い時期に数万件に
> なりそうです。
の様な事であれば、特に、ですね。

 具体的にはmail_addressとそのインデックス値(例えばカラム名を ma_indexと
でもしましょう)を持つテーブルを新設し、 table_a、 table_bから
mail_addressを取り去りma_indexを追加します。



    松枝知直    <tomom@xxxxxxxxxx>
            http://www.argus.ne.jp/~tomom/



[前][次][番号順一覧][スレッド一覧]

      9784 2004-07-07 07:33 [<ml_mysql@xxxxxxxxxx] EXCEPT のMysqlで代替方法。         
->    9785 2004-07-06 23:39 ┗[ML account <ml@xxxxx]                                       
      9786 2004-07-06 23:47  ┣[ML account <ml@xxxxx]                                     
      9787 2004-07-07 09:58  ┗[<ml_mysql@xxxxxxxxxx]