Я переношу свои запросы приложений на Sphinx из MySQL и мне сложно определить этот вариант, или даже если его вообще нужно портировать (я действительно хочу знать, стоит ли использовать sphinx для этого конкретного для эффективности/скорости):
users
uid uname
1 alex
2 barry
3 david
friends
uid | fid
1 2
2 1
1 3
3 1
Подробности:
- InnoDB
- пользователей: индекс на uid, index on uname
- друзья: объединенный индекс на uid, fid
Обычно для поиска всех друзей alex с помощью mysql:
$uid = 1
$searchstr = "%$friendSearch%";
$query = "SELECT f.fid, u.uname FROM friends f
JOIN users u ON f.fid=u.uid
WHERE f.uid=:uid AND u.uname LIKE :friendSearch";
$friends = $dbh->prepare($query);
$friends->bindParam(':uid', $uid, PDO::PARAM_INT);
$friends->bindParam(':friendSearch', $searchstr, PDO::PARAM_STR);
$friends->execute();
Насколько эффективнее найти друзей alex с sphinx vs mysql или это будет излишним?
Если sphinx будет быстрее для этого, так как список попадает в тысячи людей,
как выглядит запрос индексирования? Как я могу удалить дружбу, которая больше не существует с помощью sphinx, могу ли я иметь подробный пример в этом случае? Должен ли я изменить этот запрос на использование Sphinx?