2011-11-29 4 views
0

VB에서 코딩 중입니다.데이터베이스에 수백만 개의 레코드를 빠르게 삽입하고 검색합니다.

수백만 개의 문자열이 있다고 가정합니다. 데이터베이스에 "일회성"으로 삽입해야하며 단 하나의 열만있는 테이블이 1 개만 있어야합니다. 그리고 나서 나중에 특정 시점에서 데이터베이스에서 특정 문자열을 검색해야합니다.

Q1. 삽입을 더 빨리 만들려면 어떻게해야합니까?

한 번의 삽입, 즉 한 번만 삽입해야합니다. 업데이트 할 필요가 없습니다. 문자열 집합을 5 개로 나누고 5 개의 스레드를 사용하여 데이터를 동시에 삽입하려고했습니다. [RAM 및 CPU 사용은 상관 없음 조건]. 그러나 여전히 효과가 없습니다.

2. 어떻게하면 검색 속도를 빠르게 할 수 있습니까?

는 지금은 그냥 내가 더 나은 검색 장비가 들어

select column1 from table1 where column1 like 'something' 

같은 DB를 쿼리합니다. 데이터베이스에서 검색 할 때 가장 좋은 방법을 제안 할 수 있다고 생각하십니까?

3. 현재 ADODC를 사용하고 있습니다. [mdb 파일]

MySQL, SQLite 또는 다른 것으로 마이그레이션해야합니까?

감사합니다.

+1

왜 LIKE를 사용하고 있습니까? 와일드 카드를 지원 하시겠습니까? 어떤 종류의 와일드 카드 쿼리를 작성합니까? –

+0

RDMBS (및 SQL 작업)가 처리 할 수있는 클라이언트 (스레드)가 더 빠를 것입니다 .- 끝에서 한 번만 커밋해야합니다. –

+0

한 번 가져올 경우; Access 가져 오기 기능을 사용하지 않는 이유는 무엇입니까? – xQbert

답변

4

1 : SqlBulkCopy 클래스를 사용하면 한 테이블에 많은 데이터를 삽입 할 수 있습니다.

질문 2 : 검색하는 열에 적절한 색인이 있는지 확인하십시오. 전체 텍스트 검색을 사용하는 경우 LIKE '%searchterm (처음에는 %)으로 검색하면 검색 성능을 향상시킬 수 있습니다.

+0

은 한 원본에서 다른 원본으로 대량 데이터를 복사하는 데 사용되는 SqlBulkCopy 클래스가 아닙니다. 사용자가 삽입 할 데이터를 제공한다는 것은 언급해야한다고 생각합니다. 일반적으로 소스가 아닙니다. 답장을 보내 주셔서 감사합니다! –

+1

입력 한 모든 사용자 문자열을 DataTable에 넣고 [WriteToServer (DataTable)] (http://msdn.microsoft.com/en-us/library/ex21zs8x.aspx) 오버로드를 사용할 수 있습니다. 또는 ['IDataReader'] (http://msdn.microsoft.com/en-us/library/system.data.idatareader.aspx) 인터페이스를 구현할 수 있습니다. –

관련 문제