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]