반응형
이것은 매우 간단한 질문이고 대답은 "중요하지 않다"라고 가정하고 있지만 어쨌든 물어봐야합니다 ...
PHP로 작성된 일반 SQL 문이 있습니다.
$sql = 'SELECT * FROM `users` WHERE `id` IN(' . implode(', ', $object_ids) . ')';
사전 유효성 검사 ( $ object_ids
가 최소 1 개의 항목과 모든 숫자 값이있는 배열)라고 가정하면 대신 다음을 수행해야합니까?
if(count($object_ids) == 1) {
$sql = 'SELECT * FROM `users` WHERE `id` = ' . array_shift($object_ids);
} else {
$sql = 'SELECT * FROM `users` WHERE `id` IN(' . implode(', ', $object_ids) . ')';
}
아니면 count ($ object_ids)
를 확인하는 오버 헤드가 실제 SQL 문에 저장 될 가치가 없습니까 (만약 있다면)?
해결 방법
둘 다 큰 범위에서 중요하지 않습니다. 데이터베이스와 통신 할 때의 네트워크 지연 시간은 count ($ object_ids)
오버 헤드 또는 =
대 IN
오버 헤드보다 훨씬 큽니다. 나는 이것을 조기 최적화의 경우라고 부를 것입니다.
실제 병목 지점이 어디에 있는지 알아 보려면 애플리케이션을 프로파일 링하고로드 테스트해야합니다.
참조 페이지 https://stackoverflow.com/questions/9926433
반응형
'MySql' 카테고리의 다른 글
MySQL MYSQL - Update using while loop (0) | 2020.09.18 |
---|---|
MySQL SET GLOBAL max_allowed_packet이 작동하지 않습니다. (0) | 2020.09.18 |
MySQL Magento-재색 인 프로세스에 문제가 있습니다.-카탈로그 제품 (0) | 2020.09.18 |
MySQL 난수를 삽입하는 방법 MySql (0) | 2020.09.18 |
MySQL 내부에 카운트가있는 mysql group_concat? (0) | 2020.09.18 |
댓글