powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как быстрее всего проверить наличие оценки пользователя (INT(11)) под сообщением (BIGINT)
6 сообщений из 6, страница 1 из 1
Как быстрее всего проверить наличие оценки пользователя (INT(11)) под сообщением (BIGINT)
    #38414970
ntllct
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!

Нужно максимально быстро проверить наличие оценки пользователя member_id(INT(11)) под чьим-то сообщением comment_id(BIGINT).
На одном из форумов мне сказали, что достаточно сделать эти два поля в таблице индексируемыми и выполнить запрос:
SELECT * FROM comments WHERE comment_id = 123 AND member_id = 456
Теперь моё понимание работы такого запроса. Возможно я что-то неправильно понял, поэтому прошу поправить.
Индексы помогут быстро найти все записи с определённым comment_id, но после нахождения придётся перебирать ВСЕ записи с этим id в поисках нужного member_id, т.к. они не сортированы(?) под этим индексом. Это достаточно дорогостоящая операция если оценок под конкретным комментарием будет много.
Я думаю ввести ещё одно уникальное поле varchar(24) в котором в hex виде будут храниться 8 байт comment_id и 4 байта member_id.
Т.к. поле уникальное и индексируемое, найти его будет значительно проще запросом:
SELECT * FROM comments WHERE ckey = '5f10000000000000f1300000'
К сожалению чисел размером 12 и более байт в документации к MySQL я не нашёл. Если MySQL может искать в полях varchar нулевые байты, то можно сократить длину поля до varchar(12).
Если MySQL всёже сортирует под каждым comment_id значения другого поля member_id, то в каком случае нагрузка на диски SSD будет меньше? При сознании одного уникального поля или создании двух индексируемых полей?

Как лучше подойти к решению этой задачи? Может есть другие решения?
...
Рейтинг: 0 / 0
Как быстрее всего проверить наличие оценки пользователя (INT(11)) под сообщением (BIGINT)
    #38414980
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще-то нужен просто один составной индекс по этим двум полям:
Код: sql
1.
alter table comments add index (comment_id,member_id)


PS.ntllctvarchar(24) в котором в hex виде будут храниться 8 байтАдъ и израиль... откройте для себя (var)binary. Но в этой задаче и варбинари не нужен, а что нужно, написано выше.
...
Рейтинг: 0 / 0
Как быстрее всего проверить наличие оценки пользователя (INT(11)) под сообщением (BIGINT)
    #38414981
ntllct
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, BINARY я ни разу не использовал. Про составной индекс пойду читать.
...
Рейтинг: 0 / 0
Как быстрее всего проверить наличие оценки пользователя (INT(11)) под сообщением (BIGINT)
    #38414983
ntllct
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всё просто и отлично работает!
Спасибо за информацию про составной индекс.
...
Рейтинг: 0 / 0
Как быстрее всего проверить наличие оценки пользователя (INT(11)) под сообщением (BIGINT)
    #38442070
Прошу прощения, я пишу не по теме, однако не вижу иного способа связаться с пользователем, скрывшим свой e-mail, используя данный ресурс.

Уважаемый ntllct , если я правильно понял, над каким образовательным проектом в интернете вы работаете в одиночестве, и, если вы бы не отказались услышать конструктивную критику и пожелания касательно него, а также, возможно, принять посильную безвозмездную и добровольную помощь в программировании, прошу связаться со мной по электронной почте. Мой ящик: alexander.gonchiy@gmail.com. Если же вам это не интересно или, если я всё-таки промахнулся с предполагаемым автором проекта, то можете просто проигнорировать моё сообщение. Спасибо за внимание.

Модераторам: это моё единственное и последнее сообщение на данном ресурсе, очень прошу, пожалуйста, не удаляйте его, если это возможно. Спасибо.
...
Рейтинг: 0 / 0
Как быстрее всего проверить наличие оценки пользователя (INT(11)) под сообщением (BIGINT)
    #38442072
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александр ЛохматовМодераторам: это моё единственное и последнее сообщение на данном ресурсеЧто ж так, последнее-то? У нас не так страшно, оставайтесь :)
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как быстрее всего проверить наличие оценки пользователя (INT(11)) под сообщением (BIGINT)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]