2016-08-02 13 views
0

私は同じイベントを異なるイベントIDと一緒に組み合わせようとしているテーブルに約100k行あります。イベントIDの2種類がありますがあります。[0-9A-F] {16}^[0-9] {6,7} $MySQL:類似の行を一緒にマージするには?

私はイベント名に基づいてマッチングをやってる

、イベントの日付とイベントの場所。

これまでのところ私が思いついた最良の方法は、やると内部結合をすることでしたが、それはあまりにも遅いです:

SELECT mto.eventID, mti.eventID, mto.eventName, mti.eventName, mto.venueName, mti.venueName 
    FROM eventdiscovery mto 
    INNER JOIN eventdiscovery mti ON 
    mti.cityState = mto.cityState and mti.eventDate = mto.eventDate and mti.venueName = mto.venueName 
    and mti.eventName = mto.eventName 
    and ((mto.eventID REGEXP '[0-9A-F]{16}' and mti.eventID REGEXP '^[0-9]{6,7}$') or (mto.eventID REGEXP '^[0-9]{6,7}$' and mti.eventID REGEXP '[0-9A-F]{16}')) 

他のアイデア?

+0

あなたのデータはここにありません。あなたからのサンプルデータがあれば、たくさんのオプションがあります。 –

答えて

1

クエリでは、インデックス番号:event_discovery(cityState, eventDate, venueName, eventName, eventId)が必要です。

正規表現の一致にはオーバーヘッドがありますが、適切なインデックスを使用すると、十分に高速である可能性があります。

関連する問題