가장 잘 설명하는 방법이 확실하지 않으므로 나와 양육하십시오. 4 개의 열이있는 표가 있다고 가정 해 봅시다 : id (int 11, indexed), title, content, category (varchar 5)
.큰 WHERE IN() 절이있는 MySQL 성능
사용자가 카테고리를 선택했습니다. 각 범주는 최대 999 개의 개체를 포함 할 수 있습니다. SELECT id FROM table WHERE category = ?
을 사용하여 모든 객체의 목록을 얻습니다.
그런 다음 사용자가 개체를 선택/선택 취소하게하십시오. 그런 다음 나머지 선택된 객체의 내용을 선택해야합니다.
이제 내 질문은 다음과 같습니다. SELECT content FROM table WHERE id IN($array)
을 사용할 때 성능에 대해 걱정해야합니까? SELECT content FROM table WHERE category = ? AND id IN($array)
을 사용하는 것이 더 좋을까요? 여기에있는 아이디어는 IN을 수행하기 전에 999 개의 객체로 필터링됩니다 ...
이 내용이 의미가 있습니까? 또는 IN()
을 전혀 사용하지 않아야합니까?
, 당신은 걱정 할 필요가 없습니다 성능이 너무 많이. –
MySQL의 EXPLAIN 구문을 읽고이를 사용하여 두 쿼리의 차이점을 이해하십시오. –
'category'에 대한 색인을 생성해야합니다. – nogad