2014-11-08 3 views
2

쿼리와가 실행되고있는 테이블 ...MySQL의 쿼리 최적화 작업

SELECT * FROM 
tfl_acquistions a, 
tfl_property_attributes b WHERE 
a.id = b.property_id AND 
attribute_id ='111' AND 
a.id ='53a8288c03a6823'; 

표 tfl_acquistions

CREATE TABLE `tfl_acquistions` ( 
`id` VARCHAR(32) NOT NULL DEFAULT '', 
`address` VARCHAR(100) NOT NULL DEFAULT '', 
`city` VARCHAR(50) NOT NULL DEFAULT '', 
`state` VARCHAR(10) NOT NULL DEFAULT '', 
`zip` VARCHAR(10) NOT NULL DEFAULT '', 
`county` VARCHAR(50) NOT NULL DEFAULT '', 
`country` VARCHAR(50) NOT NULL DEFAULT '', 
`status` ENUM('Y','N') NOT NULL DEFAULT 'Y', 
`customer_case` VARCHAR(25) NOT NULL DEFAULT '', 
`circle_id` INT(11) NOT NULL DEFAULT '0', 
`visneta_id` VARCHAR(45) NOT NULL DEFAULT '', 
`add_date` DATE NOT NULL DEFAULT '0000-00-00', 
`apt_no` VARCHAR(10) NOT NULL DEFAULT '', 
`profile_picture` VARCHAR(256) NOT NULL DEFAULT '', 
PRIMARY KEY (`id`), 
INDEX `address` (`address`), 
INDEX `city` (`city`), 
INDEX `state` (`state`), 
INDEX `zip` (`zip`), 
INDEX `status` (`status`), 
INDEX `customer_case` (`customer_case`), 
INDEX `circle_id` (`circle_id`), 
INDEX `visneta_id` (`visneta_id`) 
) 

표가 나는

CREATE TABLE `tfl_property_attributes` ( 
`id` INT(11) NOT NULL AUTO_INCREMENT, 
`property_id` VARCHAR(32) NOT NULL, 
`attribute_id` INT(11) NOT NULL DEFAULT '0', 
`value` VARCHAR(500) NOT NULL DEFAULT '', 
`update_date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 
`update_by` INT(11) NOT NULL DEFAULT '0', 
PRIMARY KEY (`id`), 
INDEX `attribute_id` (`attribute_id`), 
INDEX `property_id` (`property_id`), 
INDEX `property_id_2` (`property_id`, `attribute_id`) 
) 

을 tfl_property_attributes입니다 이 쿼리를 최적화하는 작업에 나는 새로운 .... 어떤 도움을 주시면 감사하겠습니다.

+0

쿼리 계획을 확인 했습니까? 무엇을 최적화하고 싶습니까? 천천히 달리고 있습니까? 지금 복용하고있는 시간은 무엇이며 향후 최적화라고 생각하는 항목은 무엇입니까? – SMA

+0

tfl_acquistions의 수많은 레코드 때문에 속도가 느립니다. – Shoaib

+0

그래도 괜찮지 만 왜 최적화하고 싶습니까? – SMA

답변

0

시도 :

SELECT * FROM 
tfl_acquistions a JOIN 
tfl_property_attributes b ON a.id = b.property_id WHERE 
b.property_id = '53a8288c03a6823' AND b.attribute_id = '111'; 

이 방법 MySQL이 인덱스 property_id_2 (property_id, attribute_id) 두 번째 테이블에 만든을 사용할 수 있습니다. 현재는 어떤 인덱스도 사용할 수 없습니다.

EXPLAIN 키워드를 쿼리 앞에 올리면 MySQL에서 어떻게 수행 할 계획인지 확인해보십시오. 이전 쿼리에서 어떤 인덱스도 사용하지 않는다는 것을 알 수 있습니다.

+0

감사합니다 optimus :) – Shoaib