2011-10-04 2 views
4

LIKE 키워드는 SQLite 및/또는 MySQL에서 인덱스를 사용합니까?SQLite (및 심지어 MysQL)에서 LIKE

와일드 카드 일치가 색인을 사용하지 않을 수도 있지만 비교를 시작하는 방법에 대해 알고 싶습니다.

답변

6

그것은 따라 달라

WHERE field1 LIKE 'test' << can use index 
WHERE field1 LIKE 'test%' << can also use index 
WHERE field1 LIKE '%test' << cannot use index 
WHERE field1 LIKE '_test' << cannot use index 

은 긴 와일드 카드가 시작이기 때문에, 인덱스는 사용할 수 없습니다. 와일드 카드 전에 데이터를 고정한 경우 색인을 사용할 수 있습니다.

PostgreSQL과 같은 일부 데이터베이스에는 모든 경우에 인덱스를 사용할 수있는 트릭이 있지만 MySQL과 SQLite는 그렇지 않습니다.

+0

의미가 있습니다. 이제는 MySQL에서도 마찬가지입니다. SQLite도? – Anthony

+0

@Anthony : 예, 이것은 SQLite에도 해당됩니다. – Johan

+0

감사합니다. 웬일인지 두 번째 문장을 완전히 놓쳤습니다. 거듭된 질문에 사과드립니다. – Anthony

2

이것은 다음과 같이 도움이 될 수 있습니다. How MySQL Uses Indexes.

+0

예, 감사합니다. 이것은 모두 의미가 있습니다. 나는 SQLite가 매우 비슷할 것이라고 추측하지만 당신은 알 수 있겠는가? http://www.sqlite.org/lang_expr.html에서 찾을 수 없습니다. – Anthony

+0

아니요, MySQL에 대해서만 알고 있습니다. – michael667