일부 숫자 열을 포함하는 테이블을 가지고 있으며 대부분의 시간에 그 값을 얻을 수 있기 때문에 숫자를 유지해야합니다. 여기서 문 전숫자 기반의 함수 기반 인덱스
...where num_col1 like "1234%...
내 질문 같은 것을해야합니다 내에서 수 있도록하지만 난이 부분 일치를 사용하는 컬럼에 대한 일반적인 검색을하는 것도 필요한 것은 :
내가 num_col1 캐스팅에 함수 인덱스를 만들 수 있습니다 CHAR에 대한 열? 나는 시도했다. 그러나 그것은 불가능한 것처럼 보인다.
아니요, 내 쿼리의 결과 속도를 높이려면 다른 제안이 있습니까?
내가 읽을 수있는 몇 가지 해결책은 원래 테이블의 뷰를 만들 수 있고 거기에 varchar로 열 유형을 변경하고 해당 열 또는 다른 솔루션이 내 테이블 및 색인에 추가 varchar 열을 추가 할 수 있습니다 그. 나는 이미 거대한 양의 행과 엄청난 양의 컬럼을 포함하고있는 정말 큰 테이블을 가지고 있기 때문에이 두 가지 솔루션을 피하고 싶다. 모두에게 사전에
감사합니다, 보다도, N.
원본 테이블에 많은 데이터를 업데이트하고 자주 삽입하기 때문에보기가 가볍습니다. 그리고 하나의 범위에서 검색 할 수 있기 때문에 12345678이 포함 된 열이 있다고 말하면 사용자가 "1234"를 검색하면이 열이 내 쿼리 결과에 포함되기를 원합니다. – kefer9
속도를 높이려면이 작업을 수행 할 것입니다. 먼저 최대 ID를 가져 와서 크기가 자릿수인지 확인하십시오. 그런 다음 SQL 생성 객체/스크립트에서 각 범위를 최대 자릿수까지 검색하는 WHERE 구문을 생성하십시오. 따라서 최대 ID가 999999이고 사용자가 "1234"를 입력하면 WHERE 절은 다음과 같이 생성됩니다. "WHERE (id> = 1234 AND id <1235) 또는 (id> = 12340 AND id <12350) OR (id> = 123400 AND id <123500) ". 약간의 논리가 필요 하겠지만,보기가 불가능하고 성능이 중요하다면 DB에서 쉽게 될 것입니다. – roberttdev
@robert - 나쁘지는 않지만 - 조금 부 풀어 보이지만 아마 문제를 해결할 것입니다. 검색 대상에 대한 실제 요구 사항은 아직 명확하지 않습니다. 항상 시작 4 자리입니까? '지능형'키는 항상 문제입니다. 따라서 원래 테이블 디자인으로 돌아가서 처음부터 그 부분을 나눌 것을 제안합니다. – Randy