2012-01-17 2 views
1

나는 '사용자'라고하는 mysql 테이블을 가지고있다. 두 개의 분명한 필드가 있습니다 : '사용자'와 '통과'.MySQL 테이블 인덱싱

내 인증 쿼리는 다음과 같다 :

"SELECT pass FROM users WHERE user = ? AND pass = ?" 

나는 거라고 문질러서 인덱싱 쿼리를 빠르게 할 수있다. '사용자'입력란 또는 '입력'입력란 만 색인해야합니까?

또한 암호를 비교하는 것보다 SQL 쿼리와 암호를 더 빠르게 비교합니다.

+1

사용자 필드를 고유하게 설정하십시오. – Stefan

답변

5

우선 비밀번호를 일반 텍스트로 저장하면 안됩니다. 대신 암호 해시를 저장하십시오.

두 번째로 색인은 user 또는 pass입니다. 그러나 (user, pass)에 복합 색인을 작성하면이 색인의 표지 색인이됩니다. 즉, 쿼리는 데이터 파일을 참조하지 않고 인덱스에서 직접 제공 될 수 있습니다.

+0

감사합니다. @Mchl, 나는 그것을 놓쳤습니다 :-) –

+0

암호를 일반 텍스트로 저장하고 있지 않습니다. 그건 바보 같을거야. :) 그래서 기본적으로 복합 색인을 사용하는 것이 가장 좋을까요? – rasmusx

+0

@rasmusx : 네, 그렇게 생각합니다. –