다른 테이블의 항목에 대한 메타 데이터가있는 테이블이 있습니다. 메타 데이터 테이블은 (더 분명 그래서 내가 ID를 관련 제거) 다음과 같습니다 색상이 블루입니다MySQL : 단일 테이블을 여러 번 검색하고 있습니까?
id entry_id property value
1 12 color blue
2 12 shape circle
3 13 color red
4 13 shape circle
5 14 color blue
6 14 shape square
7 15 material stone
8 12 material plastic
가 지금은 모든 항목을 선택처럼, 특성에 대해이 테이블을 검색 할 :
select entry_id from table where property = 'color' and value = 'blue'
지금까지 너무 좋아. 하지만 여러 조건이있을 때 어떻게 쿼리를 확장합니까? 색상이 블루 및 모양이 원입니다입니다 예를 들어 나는 모든 항목을 검색합니다. 지금은 노동 조합에이를 것이 분명 내가 찾는 할 이상의 속성 추한 도착
select entry_id from table where property = 'color' and value = 'blue'
union
select entry_id from table where property = 'shape' and value = 'circle'
합니다. 그리고 그것은 너무 빠르지 않다고 생각합니다. 이 일을 더 우아한 방법이 있습니까? 이 테이블의 이유는 사용자가 설정할 수있는 메타 데이터가있는 개체가 있기 때문입니다.
감사합니다.
당신이 취하는 해결책이 무엇이든간에 성과를 얻으려면 (entry_id, property, value)에 색인을 만들어야합니다. 이 트리플이 이미 기본 키가 아닌 경우. –