У меня есть эта таблица:
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
Это таблица и счетчик 10-метровых строк, и, как видите, много дублирующейся информации. Я использую эту таблицу следующим образом:
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%.
но тогда мне нужен запрос, который выглядит так -
"найдите элемент x в itemA И itemB, и когда вы его найдете, получите его пару. Когда у вас есть все пары, отсортируйте их по их связи с элементом x и выберите верхнюю 500."
A. Как вы думаете, это на самом деле сделает использование таблицы более эффективным?
B. Как должен выглядеть этот запрос?