2012-07-13 4 views
2

MySQL을 사용하여 더 큰 데이터베이스를 만드는 것은 처음입니다. 더 큰 쿼리가 될 것이므로 쿼리 성능이 향상되어야합니다. 그래서 색인을 조사했습니다. 이것이 내가 배웠던 것이므로 항상 자동으로 증가하고 기본 색인으로 사용되는 id라는 이름의 열을 만듭니다.MySQL - 인덱싱 질문

일부 검색 및 읽기 후에 색인 생성에 대해 이해했지만 생각하고 싶습니다.

인덱스는 전체 테이블을 검색하는 대신 작은 부분 만 검색하기 때문에 예를 들어 WHERE 절과 함께 선택 쿼리를 사용할 때 유용합니다. WHERE 및 JOIN 절에서 사용되는 항목을 색인화해야합니다.

phpMyAdmin에서 색인을 추가하려는 열에 색인을 추가하는 것만으로 충분합니까? 아니면 선택 쿼리를 수행 할 때 뭔가해야합니까?

답변

2

SELECT 문을 변경할 필요가 없습니다. 가능한 경우 조회를 위해 MySQL이 자동으로 색인을 사용합니다.

그렇습니다. phpMyAdmin을 통해 색인을 추가하는 것으로 충분합니다.

이 동작을 보려면 인덱스를 만든 후에 EXPLAIN 접두어가 붙은 SELECT 쿼리를 실행 해보십시오. MySQL은 어떤 인덱스가 사용되고 있는지 알려줍니다.

+0

도움 주셔서 감사합니다. :) –

1

색인을 추가하기 만하면됩니다. 가능한 경우 DB 엔진이이를 사용합니다. DB 엔진에서이 엔진을 사용하는지 확인하려면 쿼리 앞에 explain을 추가하면됩니다. 그러면 결과가 출력됩니다. 예 :

explain select * from your_table 
+0

좋아, 잡았어! :) –

1

당신이 당신의 where 절에 인덱스를 사용할 수있는 것은 사실이지만, 자주 검색하는 대신보다 의미있는 같은 이름과 데이터, 전자 메일 주소를 검색하는 것을 인덱스 모른다, 날짜 등이 포함됩니다.

검색 성능 및 데이터베이스 크기 모두에 대해 테이블을 조인 할 때 인덱스를 사용하면 성능이 향상됩니다. 직원이있는 DB를 보유하고 있고 자신이 속한 사무실을 추적하고 싶은 경우를 상상해보십시오. 하나의 테이블 만 있으면 각 직원은 사무실 이름 (예 : "Albuquerque Headquarters")을 포함하는 char 문자열을 갖게됩니다. 괄호 문자열은 많은 공간을 차지하며 검색 속도가 느립니다.

대신 두 테이블과 인덱스로 설계된 직원 테이블은 각 직원에 대해 int (다른 테이블의 인덱스) 만 저장하면됩니다. 두 번째 테이블은 모든 사무실을 추적합니다. 데이터 레코드의 수가 증가하면 전체 데이터베이스가 훨씬 작아집니다. 이 방법은 유지 보수가 훨씬 쉬우 며 모든면에서 더 좋습니다.

어느 쪽이든 - 색인을 잘못 만들면 안되며 작성하려는 각 테이블에 하나씩 추가 할 수 있습니다 (누군가가이 성명서에 동의하지 않을 수도 있지만 일반적으로 나는 그냥 가서).

+0

정보를 제공해 주셔서 감사합니다! :) –