성능이 좋지 않은 쿼리가 있습니다. 서버 버전 : 5.1.37-1ubuntu5.1 (Ubuntu)mysql 5.1.37 쿼리 인덱스가 사용되지 않습니다.
SELECT * FROM `influencers` WHERE (`influencers`.`twitter_id` = 86861293) LIMIT 1
show create table influencers
influencers CREATE TABLE `influencers` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`twitter_id` varchar(255) DEFAULT NULL,
`display_name` varchar(255) DEFAULT NULL,
`created_at` datetime DEFAULT NULL,
`updated_at` datetime DEFAULT NULL,
`screen_name` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `index_influencers_on_twitter_id` (`twitter_id`),
KEY `influencers_screen_name` (`screen_name`)
) ENGINE=InnoDB AUTO_INCREMENT=504126 DEFAULT CHARSET=latin1
explain SELECT * FROM `influencers` WHERE (`influencers`.`twitter_id` = 86861293) LIMIT 1
id select_type table type possible_keys key key_len ref rows Extra
-- ----------- ----------- ---- ------------------------------- ------ ------- ------ ------ -----------
1 SIMPLE influencers ALL index_influencers_on_twitter_id (null) (null) (null) 553716 Using where
테이블의 행 수가 547545 개입니다.
설명에서 볼 수 있듯이 explain에는 가능한 키가 있지만 실제 키를 사용하여 표시하지는 않습니다.
아이디어가 있으십니까? 이게 효과가 있고, 뭔가 바보 같은 짓을하는 것 같아. twitter_id은 VARCHAR 때문에
당신은 SELECT * FROM 시도 할 수 있습니다 'influencers' WHERE ('influencers'.wtwitter_id' = "86861293") LIMIT 1 – Zimbabao
그 것이 오타입니까, 아니면 실제로 여러분의 EXPLAIN에서'twitter_id'를 사용하고 계십니까? – nos