0
고객 목록이 있습니다. 대략 있습니다. 그 테이블에 2 백만의 기록이 있습니다. 테이블의 구조는 다음과 같습니다.데이터베이스 테이블 최적화
ID (int), FLM, 전자 메일, 주소, 전화, BDAy; BDay를 제외한 각각의 nvarchar 유형
ID가 아닌 두 개의 인덱스와 FLM 열이 있습니다.
과 같은 쿼리를 실행하면SELECT * FROM tbl where FLM LIKE 'value'
약 지연이 발생합니다. 1 분. 따라서 질문 :
- FLM에서 클러스터 된 인덱스를 추가하면 성능이 변경됩니까?
- 내가 여기에서 최적화 할 수있는 기타 항목은 무엇입니까?
프로그램의 결과는 어떻게 얻을 수 있습니까? SqlConnection
을 사용하여 SQlCommand
개체에 쿼리를 지정한 다음 DataReader
을 통해 데이터를 가져옵니다. 어쩌면 여기서 더 나은 결과를 얻기 위해 이것을 최적화 할 수 있습니다 (어쩌면 데이터 집합을 사용하여)?
값에는 어떤 형식이 사용됩니까? 와일드 카드'% % % '를 사용하고 있습니까? "쇼 계획"은 무엇을 보여줍니까? 패턴에서 초기 %를 사용하는 경우 테이블 스캔이 발생하고있는 것으로 판단됩니다. – Ben
예, 나는 와일드 카드를 사용하고 있습니다. 하지만 와일드 카드를 사용하지 않더라도 오랫동안 기다려야합니다. – seeker
일반적으로 테이블에는 클러스터 된 인덱스가 있어야합니다. 고유 한 행이 가장 많고 증분되는 열에 클러스터 된 인덱스를 만들어야합니다. 또한 클러스터 된 인덱스가 넓어서는 안되기 때문에 문자열 열에서 클러스터 된 인덱스를 사용하지 마십시오. – sqlhdv