나는이 표를 가지고 :복잡한 MySQL의 쿼리 정렬 및 페어링
itemA itemB relation
1 2 0.4
1 3 0.8
2 1 0.4
2 3 0.6
3 1 0.8
3 2 0.6
그것은 10m 행 테이블과 계산, 그리고 당신이 보는대로, 중복 정보를 많이있다.
이SELECT itemB WHERE itemA=1 ORDER BY relation DESC LIMIT 1
// in this case - 3
만 실제 생활에서 내 한계는 1 만 500 아니다, 그래서 내가 쿼리 항목에 가장 높은 '관계'값이 500 개 항목을 얻을 :이 같은이 테이블을 사용합니다.
나는 테이블 아래로 축소 고려 제거하고있어 중복 :
itemA itemB relation
1 2 0.4
1 3 0.8
2 3 0.6
이 50 % 테이블 크기를 줄일 수 있습니다. 그런데 이런 식의 쿼리가 필요합니다. -
"itemA AND itemB에서 항목 x를 찾아서 찾으면 쌍을 얻습니다. 모든 쌍이 있으면 항목 x와의 관계로 정렬하십시오. 상위 500 개를 선택하십시오. "
가. 이것이 실제로 테이블 사용을 더 효율적으로 만들 것이라고 생각합니까?
B.이 쿼리는 어떻게 표시되어야합니까?
될 수 있을까요? 일치하는 항목에 대해 이야기하고 있습니까? 중복에 대해 계산 열을 저장할 수 없습니까? 그렇지 않으면 속도를 향상시키기 위해 [index] (http://stackoverflow.com/questions/1108/how-does-database-indexing-work) 데이터베이스를 원할 수 있습니다. –