私は進行中のプロジェクトを持っていますが、それは非常に小さく始まり、非常に急速に成長したため、(よく整理され、考え抜かれたという点で)少し手に負えなくなっています。
とにかく、ユーザーアクティビティを追跡し、UUIDを記録し、特定の連絡先アクティビティを記録するシステムがあります。これを使用して、顧客がサイトで何を見ているかに関する情報を生成します。かなり標準的です。とにかく、それは少し複雑で遅くなりました、そして私はクエリを最適化する助けを期待しています。
現在使用している方法よりも(おそらくJOINSを使用して)はるかに優れた方法があると確信していますが、頭を悩ませることはできないようです。いくつかの助けをいただければ幸いです。関連情報は以下のとおりです。
ありがとう。
テーブル:visitor_activity
CREATE TABLE `visitor_activity`( `vaid` int(11)NOT NULL AUTO_INCREMENT、 `uuid` varchar(128)DEFAULT NULL、 `ip_address` varchar(15)DEFAULT NULL、 `datetime` datetime DEFAULT NULL、 `url` varchar(255)DEFAULT NULL、 `user_agent` varchar(255)DEFAULT NULL、 主キー( `vaid`)、 KEY `uuid`(` uuid`)、 キー`ip_address`(` ip_address`) )ENGINE = MyISAM AUTO_INCREMENT = 70134 DEFAULT CHARSET = utf8
テーブル:contact_uuids
CREATE TABLE `contact_uuids`( `contact_id` int(11)NOT NULL DEFAULT '0'、 `uuid` varchar(128)NOT NULL DEFAULT''、 主キー( `contact_id`、` uuid`)、 キー`contact_id`(` contact_id`)、 KEY `uuid`(` uuid`) )ENGINE = MyISAM DEFAULT CHARSET = utf8
テーブル:contact_log
CREATE TABLE `contact_log`( `contact_log_id` int(11)NOT NULL AUTO_INCREMENT、 `contact_id` int(11)NOT NULL、 `datetime` datetime NOT NULL、 `action` varchar(128)NOT NULL、 `performed_by` varchar(64)NOT NULL、 `ip_address` varchar(15)NOT NULL、 主キー( `contact_log_id`)、 キー`contact_id`(` contact_id`)、 キー`ip_address`(` ip_address`)、 KEY `performed_by`( `performed_by`) )ENGINE = MyISAM AUTO_INCREMENT = 9017 DEFAULT CHARSET = utf8
現在のSQLステートメント:
SELECT DISTINCT( `va`.`vaid`)、 `va`.`datetime`、 `va`.`uuid`、 `va`.`ip_address`、 `va`.`url` FROM `visitor_activity`` va` WHERE `va`.`uuid` IN(SELECT` uuid` FROM `contact_uuids`` cu` WHERE `cu`.`contact_id` = '1')|| `va`.`ip_address` IN(SELECT DISTINCT(` ip_address`)FROM `contact_log`` cl` WHERE` cl`.`contact_id` = '1' && `performed_by` ='Contact') ORDER BY `va`.`datetime` DES