2011-01-22 5 views
1

MySQL (InnoDB)을 사용하여 DECIMAL 열의 부호를 효율적으로 색인화하는 방법이 있습니까?십진수의 MySQL 색인 부호

나는 조건이 where amount > 0 (그리고 비자의 경우) 인 쿼리를 사용하고 있으며 신속하게 처리 할 수있는 멋진 방법이 있는지 궁금합니다. 동일한 방법으로 문자열의 첫 번째 문자를 인덱싱하면 select distinct left(some_string_column, 1)과 같은 쿼리가 빨라질 수 있습니다.

답변

1

십진수 열을 인덱싱하면 MySQL이 결과를 반환하는 데 도움이됩니다 (column > 0).

CREATE INDEX signindex ON table(deccolumn); 

게다가, MySQL이 효율적으로 인덱스를 사용하고 where에서 함수의 사용을 방지 할 수 있도록하기 위해, 당신은 새로운 미리 계산 된 데이터가 열 및 인덱스를 추가 할 수있는 새 열

ALTER TABLE table ADD leftchar char(1); 
UPDATE table SET leftchar=left(some_string_column, 1); 
CREATE INDEX charindex ON table(leftchar); 
SELECT DISTINCT leftchar FROM table;