2013-07-19 3 views
0

메인 테이블에 약 200K 행의 InnoDB 데이터베이스가 있습니다. VARCHAR (50) 필드를 기반으로이 테이블의 행을 SELECT 할 때 매우 느린 쿼리가 발생합니다.InnoDB VARCHAR 컬럼에서 SELECT 쿼리가 매우 느림

내 쿼리의 형태로 취

SELECT * FROM table1 WHERE column1 = 'ABC3849DKJFL233489JKJFFK' and column2 = 'UIOJ3833838JJKFDL948DJ'; 

이 쿼리 크기의 많은 주문으로 내 스크립트를 늦추고됩니다 그리고 내가이 문제를 해결할 때까지 내 작업을 계속하기 위해 단지 수 없습니다.

이 VARCHAR 문자열을 제외한 행을 선택할 다른 방법이 없습니다. 이러한 쿼리 속도를 높이는 방법에 대한 의견이 있으십니까? 내가 여기서 할 수있는 일이 있니?

+0

심플. 'column1'과'column2'에 인덱스를 만듭니다. –

+0

http://stackoverflow.com/questions/2632347/sql-indexing-on-varchar – zod

+1

http://stackoverflow.com/questions/1898453/does-index-on-varchar-make-performance-difference – zod

답변

0

두 열의 색인을 함께 추가하면 속도가 빨라집니다. 시도 :

ALTER TABLE `table1` 
    ADD INDEX `dual_index` (`column1`, `column2`); 
+0

답장을 보내 주셔서 감사합니다. 나는 그것을 시도 할 것이지만, 때로는 열 1로만, 때로는 두 열로 선택하면 어떻게해야하는지 말해 줄 수 있습니까? 예를 들어, 때로는 다음과 같이 선택합니다 :'SELECT * FROM table1 WHERE column1 = 'ABC3849DKJFL233489JKJFFK' '그리고 때로는 위의 예제처럼'SELECT * FROM table1 WHERE column1 ='ABC3849DKJFL233489JKJFFK '및 column2 ='UIOJ3833838JJKFDL948DJ '. .. 각 경우에 대해 두 개의 별도 색인을 만들어야합니까? – iakkam

+0

@halgonia 색인을 만들고 성공 했습니까? 나는이 정확한 문제를 겪고있다. 첫 번째 필드에서 그 자체로 일치하면 빨리 끝납니다. 두 번째 필드에서 그 자체로 일치하면 빨리 끝납니다. 각 필드마다 별도의 색인이 있습니다. 같은 검색어에서 두 필드가 일치하면 속도가 느립니다 (0.02 초 vs. 5 초). 두 필드 모두에서 다른 인덱스를 만들려고했지만 아직 시도하지 않았습니다. 그것은 내 응용 프로그램에서 내 쿼리의 모든 순열에 대해 그렇게 할 필요가 미친 것, 실제로 필요한가? – Travitron

관련 문제