не уверены в использовании sphinx для этих запросов - PullRequest
0 голосов
/ 09 июля 2020

Насколько движок, такой как Sphinx, может помочь найти небольшой набор строк, когда вы сравниваете несколько столбцов вместо выполнения полнотекстового поиска.

Например, у нас есть база данных для каждого клиента. Многие из них содержат более 10 миллионов пользовательских строк. Проблема в том, что большинство этих строк представляют собой 1 вход в систему, а не реальных пользователей (вставьте 100 различных причин, почему это плохо, но это решения, принимаемые людьми, а не мной). «Настоящего» пользователя можно отличить от логина или другого типа пользователя, сравнивая строки в 3 разных столбцах. (Раньше я исключал полный текст, потому что это небольшие значения - обычно в диапазоне от 10 до 15 символов, но никогда не более 32).

Будет ли такой инструмент, как Sphinx, хорошим выбором для запросов, в которых требуется только 1 тип пользователя ?

1 Ответ

0 голосов
/ 16 июля 2020

Что ж, сфинкс может в этом помочь, но только потому, что он предоставляет способ сделать своего рода «материализованное представление».

... ie может выполнять большой сложный запрос, составляя ваши 'сравнения 'возможно, как JOIN в сложном запросе к базе данных. Создайте агрегирование всех данных (даже этих единичных логинов). Запрос, выполнение которого может занять ДОЛГОЕ время. инструмент 'indexer', как некоторые функции, которые заставляют выполнять множество небольших запросов для составления большого индекса.

Ie по-прежнему выполняет базовую работу в базе данных и просто сохраняет результат в индексе сфинкса. Sphinx просто немного помогает с компоновкой в ​​единый индекс (или представление)

... затем может выполнять произвольные запросы по индексу sphinx, например, просто перечислять «реальных» пользователей. Ie может выполнять «быстрые» запросы к «промежуточным» данным, хранящимся в sphinx.

Но в этом случае sphinx не дает большого преимущества, просто делая материализованное представление в mysql напрямую. ie может сохранять промежуточные данные в mysql напрямую и запускать запросы там.

На самом деле ничего не делает, что НЕ МОЖЕТ быть сделано с mysql, просто, возможно, делает это «проще» со sphinx.

...