11

Datastax 자바 드라이버 (카산드라 드라이버 코어 2.0.2) 자는 PreparedStatements뿐만 아니라 QueryBuilder API를 지원합니다. 하나 이상의 다른 장점을 사용하여 특정 이점? 단점?카산드라 자바 드라이버 - QueryBuilder API는 카산드라에 대한

문서 : http://www.datastax.com/documentation/developer/java-driver/2.0/common/drivers/reference/driverReference_r.html

위의 문서는 (내 책에) 장점이 많은없는 프로그램 쿼리를 작성 이외의자는 PreparedStatements 이상 QueryBuilder API를 사용을 통해 어떤 이점을 언급하지 않습니다.

의견 및 경험을 공유하십시오. 감사.

답변

17

PreparedStatements는 실행중인 내용이 이미 서버 측에 저장되어 있으므로 성능이 향상됩니다 (명령문을 다시 사용한다고 가정 할 때). 새로운 구체적인 값을 바인드하고 명령문을 다시 실행하기 만하면됩니다.

쿼리 작성기는 준비가 필요없는 상태로 실행되도록 문자열 문을 만드는 더 멋진 방법입니다. 첫 번째 옵션이 가장 빠른 성능의 관점, 두 번째와 세 번째에서

은 동일합니다 :

// below prepared statement has already been prepared, we're now just re-using 
PreparedStatement ps = session.prepare("SELECT * FROM users WHERE uname=?"); 

1) session.execute(ps.bind('david'); 
2) session.execute("SELECT * FROM users WHERE uname=david"); 
3) session.exectute(QueryBuilder.select() 
           .all() 
           .from("users") 
           .where(QueryBuilder.eq('uname', 'david')) 

이 관련이 있지만 쿼리 문자열을 실행 마이그레이션의 좋은 예는 거기 빌드의 경우 너무 확실하지 않음 사전 작성된 준비 문을 this ycsb client에 사용하여 쿼리 빌더에 전달하십시오.

+2

참고로''''QueryBuilder'' 체인에서'''PreparedStatement'' 개체를 생성 할 수 있으므로''''QueryBuilder''에서''PreparedStatement'''로 옮기는 것이 매우 쉽습니다 – Drew