イベント タイプ B と C の間で同時に発生するタイプ A のすべてのイベントを見つける良い方法を見つけようとしています。
また、イベント B と C は process_id を共有する必要があります。
各 process_id グループには、1 つの B イベントと 1 つの C イベントがあります。
テーブル構造は次のようになります。
CREATE TABLE IF NOT EXISTS `eventlog` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`time` datetime NOT NULL,
`process_id` varchar(20) NOT NULL,
`event` varchar(25) DEFAULT NULL,
`data` varchar(45) DEFAULT NULL,
)
私の試みは次のようになりました:
SELECT q3.time, q3.event, q3.process_id, q3.data
FROM `eventlog` as q1, `eventlog` as q2, `eventlog` as q3
WHERE q1.process_id=q2.process_id AND q1.process_id=q3.process_id
AND q1.event='EVENTB' AND q2.event='EVENTC' AND q3.event='EVENTA'
AND q3.time BETWEEN q1.time AND q2.time
これを実行すると、ハングします。これを行うためのより効率的な、または固定された方法について何か考えはありますか?
ありがとう!