2013-02-20 6 views
0

나는 ~ 1.500.000 기록 테이블이 있습니다 크기 nameitem_id간단한 MySQL의 쿼리가 큰 테이블에 매우 느리게 실행 명령

CREATE TABLE `item_locale` (
    `item_id` bigint(20) NOT NULL, 
    `language` int(11) NOT NULL, 
    `name` varchar(256) COLLATE utf8_czech_ci NOT NULL, 
    `text` text COLLATE utf8_czech_ci) 
    PRIMARY KEY (`item_id`,`language`), 
    KEY `name` (`name`(255)) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci; 

, language 1 차 키와 인덱스를 255

다음 쿼리와

는 : 50 행이 필요했다하지만

select item_id, name from item_locale order by name limit 50; 

셀렉트는 약 3 초 이벤트를합니다.

이러한 쿼리의 속도를 높이려면 어떻게해야합니까?

편집 : 여러분 중 일부는 INDEX를 추가 할 것을 제안했습니다. 나는 name 열이 나는 명령에 explain을 runned 255

크기 색인되어, 위에서 언급 한 ...

+----+-------------+---------------+------+---------------+------+---------+------+---------+----------------+ 
| id | select_type | table   | type | possible_keys | key | key_len | ref | rows | Extra   | 
+----+-------------+---------------+------+---------------+------+---------+------+---------+----------------+ 
| 1 | SIMPLE  | item_locale | ALL | NULL   | NULL | NULL | NULL | 1558653 | Using filesort | 
+----+-------------+---------------+------+---------------+------+---------+------+---------+----------------+ 

이상한 것은 그것이 그 어떤 인덱스를 사용하지 않는 것입니다

+1

MySQL이 쿼리를 어떻게 수행하는지 보려면'EXPLAIN'을 사용하십시오. –

+0

쉬운 해결책은 item_id와 name에 덮어 쓰기 색인을 추가하는 것입니다. 'name'만으로 인덱스를 추가하는 것만으로도 MySQL이 인덱스 결합 *을 처리하는 방법에 따라 충분할 수 있습니다. * (read as : 나도 몰라요) * –

+0

explain 명령의 결과를 추가했습니다. –

답변

1

를 사용하려고, 인덱스 문제의 어떤 종류가 있었다 - 나는 그들 모두를 떨어 다시 다시. 그리고 마침내 성공합니다. 감사.

1

50 개의 레코드를 검색하는 것이 너무 무거움. 10으로 제한하십시오. 또한 다음을 기준으로 주문을 사용하고 있기 때문입니다.

+4

0으로 제한하면 더 빨리 이됩니다. 진지하게 50 레코드를 검색하는 것이 결코 문제가되지 않아야합니다. –

+0

인덱스와 유사한 쿼리 최적화 기법이 많이 있습니다. 유용하게 사용하십시오. –

1

약간 속도가 빨라질 수있는 인덱스를 이름 필드에 적용하십시오.

+1

인덱스가 이미 텍스트에 언급 된대로 이미 있습니다. –

1

쿼리 힌트를 사용하는 것을 시도하십시오 :

select item_id, name 
from item_locale USE INDEX FOR ORDER BY (name) 
    order by name limit 50; 

도 결국

select item_id, name 
from item_locale FORCE INDEX (name) 
    order by name limit 50; 
+0

효과 없음, 여전히 느림, 설명 없음 차이 없음. –

관련 문제