を改善します所有者 - 営業担当者。私は彼の連絡先の所有者の訪問に示す必要があります。は、私は、このようなクエリが持っているクエリのパフォーマンス
訪問数はADM_VISIT_GROUPテーブル - > 200,000行に格納されます。訪問にはADM_CONTACTを指すcontact_idカラムがあります。 連絡先はADM_CONTACTテーブルに格納されます。約500,000行です。 連絡先の所有権は、ADM_CONTACT_OWNER表に格納されます。これは、ADM_CONTACTの場合と多かれ少なかり同じ行数です。
はショーを説明する:
CREATE TABLE `ADM_VISIT_GROUP` (
`ID` char(128) COLLATE utf8_polish_ci NOT NULL,
`UUID` varchar(255) COLLATE utf8_polish_ci DEFAULT NULL,
`CONTACT_STATE` varchar(255) COLLATE utf8_polish_ci DEFAULT NULL,
`VISIT_ID` varchar(255) COLLATE utf8_polish_ci DEFAULT NULL,
`HOST` varchar(255) COLLATE utf8_polish_ci DEFAULT NULL,
`IP` varchar(255) COLLATE utf8_polish_ci DEFAULT NULL,
`LOCATION` varchar(255) COLLATE utf8_polish_ci DEFAULT NULL,
`URI` varchar(255) COLLATE utf8_polish_ci DEFAULT NULL,
`TIME` datetime DEFAULT NULL,
`CONVERSATION` varchar(255) COLLATE utf8_polish_ci DEFAULT NULL,
`DURATION` bigint(20) DEFAULT NULL,
`VISIT_SOURCE` varchar(255) COLLATE utf8_polish_ci NOT NULL,
`VISIT_SOURCE_HOST` varchar(255) COLLATE utf8_polish_ci DEFAULT NULL,
`VISIT_SOURCE_KEYWORDS` varchar(1024) COLLATE utf8_polish_ci DEFAULT NULL,
`VISIT_SOURCE_DETAILS` varchar(255) COLLATE utf8_polish_ci DEFAULT NULL,
`VISIT_SCORE` bigint(20) DEFAULT NULL,
`CLIENT` varchar(255) COLLATE utf8_polish_ci DEFAULT NULL,
`EMAIL` varchar(255) COLLATE utf8_polish_ci DEFAULT NULL,
`CONTACT_ID` varchar(255) COLLATE utf8_polish_ci DEFAULT NULL,
`CONVERSATION_ID` varchar(255) COLLATE utf8_polish_ci DEFAULT NULL,
`IP_ORGANIZATION` varchar(255) COLLATE utf8_polish_ci DEFAULT NULL,
`ISP_ONLY` tinyint(1) DEFAULT NULL,
`VENDOR_ID` varchar(255) COLLATE utf8_polish_ci NOT NULL,
PRIMARY KEY (`ID`),
KEY `FK_VISIT_GROUP_VENDOR_ID` (`VENDOR_ID`),
KEY `IDX_VISIT_GROUP_VENDOR_ID_CONTACT_ID` (`VENDOR_ID`,`CONTACT_ID`),
KEY `IDX_VISIT_GROUP_ISP_ONLY_VENDOR_ID_CONTACT_ID` (`ISP_ONLY`,`VENDOR_ID`,`CONTACT_ID`),
KEY `IDX_VISIT_GROUP_TIME` (`TIME`),
KEY `IDX_VISIT_GROUP_EMAIL` (`EMAIL`),
KEY `IDX_VISIT_GROUP_CONTACT_ID` (`CONTACT_ID`),
CONSTRAINT `FK_VISIT_GROUP_VENDOR_ID` FOREIGN KEY (`VENDOR_ID`) REFERENCES `ADM_VENDOR` (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci
表のADM_CONTACT_OWNER:
CREATE TABLE `ADM_CONTACT_OWNER` (
`ID` char(128) COLLATE utf8_polish_ci NOT NULL,
`VERSION` int(11) NOT NULL,
`CONTACT_ID` varchar(255) COLLATE utf8_polish_ci NOT NULL,
`OWNER_ID` varchar(255) COLLATE utf8_polish_ci NOT NULL,
`CREATED_ON` datetime NOT NULL,
`OWNERSHIP_RIGHTS` varchar(255) COLLATE utf8_polish_ci NOT NULL,
`GRANTED_BY_ID` varchar(255) COLLATE utf8_polish_ci NOT NULL,
`MODIFIED_ON` datetime NOT NULL,
`DELETED` tinyint(1) NOT NULL,
PRIMARY KEY (`ID`),
UNIQUE KEY `CONTACT_ID` (`CONTACT_ID`,`OWNER_ID`),
KEY `FK_CONTACT_OWNER_GRANTED_BY_ID` (`GRANTED_BY_ID`),
KEY `FK_CONTACT_OWNER_CONTACT_ID` (`CONTACT_ID`),
KEY `FK_CONTACT_OWNER_OWNER_ID` (`OWNER_ID`),
KEY `IDX_CONTACT_OWNER_CONTACT_OWNER` (`CONTACT_ID`,`OWNER_ID`),
KEY `IDX_CONTACT_OWNER_OWNER_DELETED` (`OWNER_ID`,`DELETED`),
CONSTRAINT `FK_CONTACT_OWNER_CONTACT_ID` FOREIGN KEY (`CONTACT_ID`) REFERENCES `ADM_CONTACT` (`ID`),
CONSTRAINT `FK_CONTACT_OWNER_GRANTED_BY_ID` FOREIGN KEY (`GRANTED_BY_ID`) REFERENCES `ADM_USER_ACCOUNT` (`ID`),
CONSTRAINT `FK_CONTACT_OWNER_OWNER_ID` FOREIGN KEY (`OWNER_ID`) REFERENCES `ADM_USER_ACCOUNT` (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci
全クエリ:
select
visitgroup0_.VISIT_ID as col_0_0_,
visitgroup0_.DURATION as col_1_0_,
visitgroup0_.TIME as col_2_0_,
visitgroup0_.VISIT_SOURCE as col_3_0_,
visitgroup0_.VISIT_SOURCE_HOST as col_4_0_,
visitgroup0_.VISIT_SOURCE_KEYWORDS as col_5_0_,
visitgroup0_.EMAIL as col_6_0_,
visitgroup0_.IP_ORGANIZATION as col_7_0_,
visitgroup0_.CLIENT as col_8_0_,
visitgroup0_.HOST as col_9_0_,
visitgroup0_.IP as col_10_0_,
visitgroup0_.LOCATION as col_11_0_,
visitgroup0_.URI as col_12_0_,
visitgroup0_.UUID as col_13_0_,
visitgroup0_.VISIT_SCORE as col_14_0_,
visitgroup0_.CONVERSATION as col_15_0_,
visitgroup0_.CONTACT_ID as col_16_0_,
visitgroup0_.CONVERSATION_ID as col_17_0_
from
ADM_VISIT_GROUP visitgroup0_,
ADM_CONTACT_OWNER contactown1_
where
visitgroup0_.TIME>'2012-02-14 02:59:24' and
visitgroup0_.VENDOR_ID='3739d7a7-2e8f-4409-bd2d-2b505b5e7749' and
visitgroup0_.CONTACT_STATE='PROSPECT' and
contactown1_.CONTACT_ID=visitgroup0_.CONTACT_ID and
contactown1_.OWNER_ID='3f440a3e-a55e-44f5-ac75-d30bd27f4f97'
order by visitgroup0_.TIME desc limit 30;
を
+----+-------------+--------------+--------+----------------------------------------------------------------------------------------------------------------------------------+----------------------+---------+------------------------------------------------+-------+--------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+--------------+--------+----------------------------------------------------------------------------------------------------------------------------------+----------------------+---------+------------------------------------------------+-------+--------------------------+
| 1 | SIMPLE | visitgroup0_ | range | FK_VISIT_GROUP_VENDOR_ID,IDX_VISIT_GROUP_VENDOR_ID_CONTACT_ID,IDX_VISIT_GROUP_TIME,IDX_VISIT_GROUP_CONTACT_ID | IDX_VISIT_GROUP_TIME | 9 | NULL | 19640 | Using where |
| 1 | SIMPLE | contactown1_ | eq_ref | CONTACT_ID,FK_CONTACT_OWNER_CONTACT_ID,FK_CONTACT_OWNER_OWNER_ID,IDX_CONTACT_OWNER_CONTACT_OWNER,IDX_CONTACT_OWNER_OWNER_DELETED | CONTACT_ID | 1534 | salesmanago_main.visitgroup0_.CONTACT_ID,const | 1 | Using where; Using index |
+----+-------------+--------------+--------+----------------------------------------------------------------------------------------------------------------------------------+----------------------+---------+------------------------------------------------+-------+--------------------------+
ADM_VISIT_GROUPテーブルを使用して作成しました
誰でもこのクエリの速度を向上させるのに役立つことができますか?
編集されたものがADM_ *を使用しているのに対して、完全なクエリでSM_ *テーブルが使用されるのはなぜですか? – vulkanino
typo、申し訳ありません...私はポストを更新しました...私はローカルで2つのスキームを持っています – Konrad
あなたは 'SM_CONTACT_OWNER'テーブルからデータを選択しないことに加えて、私はJOINを使用する以外の特定の問題は表示しません。 – vulkanino