Задавайте вопросы, мы ответим
Вы не зашли.
В силу того что хоть и работаю с MySQL не первый день, но работаю на уровне простых запросов и пока слабо разбираюсь в более глубоких вопросах.
Возник такой вопрос.
Есть три поля DialogID | UserOneID | UserTwoID
DialogID первичный ключ, но с ним все понятно.
Поиск нужного DialogID иногда идет через Пользователя One и Two.
Запрос получается примерно такой ...... WHERE UserOneID IN (54,120) AND UserTwoID IN (54,120); (повторяться они не могут то есть UserOneID никогда не равен UserTwoID)
Речь идет о основной записи диалога двух пользователей, как следствие каждый пользователь может иметь много диалогов с разными пользователями.
Причем вариации записи может быть хоть такой 15 | 54 | 120 хоть такой 15 | 120 | 54... зависит от того какой из двух пользователей станет зачинщиком диалога.
Вопрос состоит в том как лучше поставить индекс.. составной на UserOneID+UserTwoID или по отдельности на каждого User ?
И еще один вопрос, я как вариант рассматривал схему при которой запись будет создаваться всегда по принципу UserOneID всегда меньше UserTwoID (то есть в левой колонке значение всегда меньше чем в правой), код формирующий запрос проверяет кто больше кто меньше и расставляет их как надо ... в стоге запрос на выборку бы уже всегда был типа такого WHERE UserOneID = 54 AND UserTwoID = 120;
Но эта схема вносит чуть-чуть нежелательной логики в программный код которую можно забыть, случайно поправить не так и будет все плохо
Отсюда возник вопрос, насколько такой вариант может быть производительнее или же выигрыш в производительности был бы не настолько существенным а может даже и вовсе отсутствовал ? (к примеру если бы записей было бы больше 25 000)
Неактивен
NR55RU написал:
Вопрос состоит в том как лучше поставить индекс.. составной на UserOneID+UserTwoID или по отдельности на каждого User ?
По отдельности.
NR55RU написал:
Отсюда возник вопрос, насколько такой вариант может быть производительнее
ни на сколько.
Неактивен
Спасибо за ответ.
Так же пока ждал ответа читал ваш форум, наткнулся на тему http://sqlinfo.ru/forum/viewtopic.php?id=151 из которой в общих чертах узнал как работает индекс. Рекомендую тем у кого так же есть вопросы по индексам.
Неактивен