2013-07-14 2 views
0

내가 자바로 프로그램 형태로 파이썬을 번역하고있어 내가 만약 내가 내 DB에서 확인해야 어떤 시점에서 MySQL을난 MySQL의

함께 일하고 있어요에서 쿼리와 haskey() 함수를 구현하는 방법 특수 키가있는 데이터 의이

if(namesTable.haskey(24)) 
    doSoemthing(); 

가 난 그냥이 특수 키 여부 아무것도가 있는지보고 싶어 DB를에서 모든 검색된 데이터가 필요하지 않습니다 가정 해 봅시다. 또한, 카운트를 사용하면 모든 db를 거쳐 248과 같은 숫자를 부여하기 때문에 COUNT를 사용하지 않으려 고합니다.

데이터베이스에서 일치하는 항목을 찾으면 곧 답을 알려줍니다.

+0

테이블이 제대로 인덱싱되면 기존 키를 쿼리해도 "모든 데이터베이스를 통과하지 못합니다". – Brian

+1

'SELECT 1 FROM table WHERE key = value'와 같고 결과의 수를 확인하십시오. –

답변

0

(특수 키가있는 데이터가있는 경우 "내 데이터베이스를 확인하십시오"은 특정 값의 존재에 대해 단일 테이블의 단일 열을 검사한다는 것을 의미합니다. . 당신이 행이 특정 테이블에 존재하는 경우 특정 열에서 특정 값을 참조하기 위해 테이블을 확인해야 할 경우 가장 직접적인 해석은)

, 가장 효율적인 쿼리는 다음과 같을 수 있습니다

SELECT 1 
    FROM DUAL 
WHERE EXISTS (SELECT 1 
       FROM mytable t 
       WHERE t.key = 24 
      ) 

의사 테이블 DUAL은 둘 이상의 행만 리턴하도록 보장되며 EXISTS 서브 u 리 y는 한 행이 발견 되 자마자 TRUE로 "나옵니다".

최상의 성능을 얻으려면 key가 맨 앞자리로 지정된 색인이 필요합니다.

내가 좋아하는, 응용 프로그램에서 플래그를 사용하는 것이 좋습니다
0

ON mytable (key) 
: 프로그램의 시작에

Boolean hasKey = false; 
  1. , 당신은 있는지 확인하는 한 번만 namesTable에 대해 SQL 쿼리를 실행해야 그것은 특별한 키를 가지고 있으며 그 쿼리 결과에 기초하여 hasKey을 설정합니다. 다음과 이후에서 당신은 다시 DB를 체크 할 필요가 없습니다, 당신은 간단하게 사용할 수 있습니다

    경우 (hasKey) { soSomething(); } namesTable의 레코드 추가/업데이트에

  2. ,이 특수 키가있는 경우 예 다음 truehasKey 플래그를 설정 있는지 확인합니다.