2011-05-06 5 views
6

나는 이것을 알고 싶습니다 :선택적인 카산드라를 정상보다 빨리 섭취 하시겠습니까?

$column_family->get('row_key', $columns=array('name1', 'name2')); 

더 유연한 속도로 빠르면 지금 사용하십시오 :

$column_family->get('row_key'); 

방법 1은 물론 구현하기가 어렵지만 부하가 적습니다/대역폭/지연?

+1

MySQL의 knowlegde를 기반으로; ''SELECT field FROM table ''이''SELECT * FROM table "'보다 빠르기 때문에, 좀 더 선택적으로 get하는 것이 더 빠르다. 작은 데이터 세트에서 눈에 띠는지 스스로에게 질문 할 수는 있습니다. –

답변

2

첫 번째 것은 더 빠릅니다. 특히 많은 열을 포함하는 큰 테이블을 사용하는 경우 특히 더 빠릅니다.

name1name2이라는 두 개의 열만 있어도 이름을 지정하면 MySQL 측의 테이블 구조에서 열 이름을 추출하지 않아야합니다. 따라서 선택자 *을 사용하는 것보다 빠릅니다.

그러나 큰 테이블에 대해 microtime()을 사용하여 결과를 테스트하면 내가 말하는 바를 알 수 있습니다. 물론 테이블에 20 개 이상의 열이 있고이를 모두 추출하려는 경우 *을 열 이름보다 많이 나열하는 것이 더 쉽지만 속도면에서 열을 나열하는 것이 더 빠릅니다.

이 결론을 확인하는 가장 좋은 방법은 직접 테스트하는 것입니다.

3

카산드라는 mysql이 아니기 때문에 거기에는 몇 가지 다른 점이 있습니다. :이 경우

, 카산드라의 스파 스 열 스토리지 모델은 카산드라 역 직렬화하고 행 수준 열 항목을 체크 할 필요가 없기 때문에 열 작은 번호의 전체 행 버전이 더 빠를 것을 의미합니다.

물론 많은 수의 열에 대해 필요 이상으로 비 직렬화 작업을 수행하면 다시 우위를 점할 것입니다.

결론 : 이것에 대한 걱정은 거의 조숙 한 최적화입니다. 그렇지 않으면 시험해보십시오.