2011-11-28 2 views
0

배경 : 다른 데이터베이스의 고객 이름에 한 데이터베이스의 트랜잭션 레코드를 일치시키는 Python으로 일치하는 스크립트를 작성하고 있습니다. 복잡성은 이름이 고유하지 않으며 트랜잭션마다 여러 가지 다른 방식으로 표현 될 수 있다는 것입니다.누군가이 최적화 전략에 대해 두 센트를 줄 수 있습니까?

데이터베이스에 대한 쿼리를 여러 번 수행하는 것보다는 (꽤 느립니다) 성 (이 경우에는 변경되지 않을 것이라고 말합니다)이 "Smith"인 레코드를 모두 얻는 것이 더 빠를 것입니다. 모든 레코드는 다양한 데이터 포인트를 사용하여 특정 "John Smith"에 대한 일치를 찾고 있지만 메모리에로드됩니다.

더 빠를 것이냐, 아니면 파이썬에서 가능할 것인가? 그렇다면 누구나 그것을 할 수있는 방법에 대한 권고 사항이 있습니까?

+1

가능하지만이 질문의 상당 부분은 세부 사항에 달려 있습니다. 필자의 의견은 이러한 쿼리의 결과가 메모리에 맞으면 무엇이든 작성하고 나중에 최적화하는 것입니다. – Wilduck

답변

0

LIKE 및 다른 SQL 함수를 사용하여 데이터베이스 쿼리에서 가능한 한 많은 작업을 수행 할 것이지만 전략은 타당합니다. 복잡한 기준과 일치하는 쿼리를 만드는 것이 가능해야합니다.

+0

문제는 복잡한 쿼리를 사용하지 않는 것이 아니라 여러 개의 별도 컴퓨터를 사용하는 DB가 끊임없이 사용된다는 것이며 전체적으로 더 빠른지 궁금합니다. – jimstandard

+0

병목 현상이 DB 인 경우 일부 작업을 다른 컴퓨터에로드하는 것이 도움이됩니다. –

1

문제는 효율성 중 하나가 아니라 정확성입니다. 데이터베이스에 대해 여러 개의 작은 쿼리를 수행하든 하나의 큰 쿼리를 수행하든 관계없이 이름이 고유하지 않거나 일관성이 없다면 어떻게 할 것입니까?

Transaction 1: name="John Smith" 
Transaction 2: name="John T. Smith" 
Transaction 3: name="John Smith, Jr." 
Transaction 4: name="Johnny Smith" 

및 없이는 아무데도 이러한 거래 뒤에 1과 4 개의 다른 사람 사이에있을 수 있습니다, 그것은이되면 할 예정 프로그램이 무엇인지 (예 : 신용 카드 번호, 이메일 주소, 배송 주소 등) 식별 정보를 다른 모든 "스미스"를 찾았나요?

질문에 대답하려면 "의존적"입니다. 하나의 큰 쿼리가 더 빠르다고 가정 할 수도 있지만, 99 % chaff (Bob Smiths, Terry Smiths 등)를 반환하면 각 이름을 개별적으로 쿼리하는 것이 훨씬 빠를 수 있습니다. "더 독특"하고 색인 된 신용 카드 번호와 같은 보충 정보가있는 경우 이름보다는 쿼리를 사용하는 것이 좋습니다. 에 관한

+0

정확성에 대한 귀하의 우려를 이해하고 적합한 개인에게 범위를 좁힐 수있는 많은 정보가 있습니다. 문제는 셀로리 설치에서 실행되는 하나의 DB 및 여러 대의 컴퓨터 (최대 100 대까지)를 갖게된다는 것입니다. 이 하나의 DB를 작동 시키므로 총 시스템이이 방법 또는 다른 방법으로 더 빠를 지 궁금합니다. – jimstandard

2

: "이 빠를 것"은 SQL 엔진의

막후 물류 정말 이런 종류의 물건에 최적화되어 있습니다. 그러나 SQL 프로시 듀어 또는 상당히 복잡한 조회를 작성해야 할 수도 있습니다.

SQL을 유지 관리하는 데별로 좋지 않거나 시간이 많이 걸리는 쿼리가 아니라면 CPU/IO 시간보다 프로그래머가 시간을 낭비 할 수 있습니다.

그러나 이것이 자주 실행되거나 시간에 민감한 것이라면 SQL에 일종의 JOIN 논리를 작성하고 적절한 값 (와일드 카드)을 전달하고 데이터베이스에서 필터링을 수행해야합니다. 관계형 데이터 세트에서 많은 수의 "잘못된"레코드를 수집 한 다음 절차 코드에서 필터링하는 대신

데이터베이스가 "매우 느립니다"라고 말하면됩니다. 이것은 먼 호스트에 있기 때문에 또는 당신이하고있는 검색 유형에 대한 테이블의 색인이 생성되지 않았기 때문입니까? ... 인덱싱되지 않은 열에 대해 복잡한 쿼리를 수행하는 경우 고통이 될 수 있습니다. ANALYZE를 포함하여 다양한 SQL 도구를 사용하여 조회 속도를 @ 려울 수 있습니다. 대부분의 SQL GUI에는 이런 것들에 대한 몇 가지 단축키가 있습니다.

관련 문제