|
|
|
Как быстрее всего проверить наличие оценки пользователя (INT(11)) под сообщением (BIGINT)
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! Нужно максимально быстро проверить наличие оценки пользователя 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 будет меньше? При сознании одного уникального поля или создании двух индексируемых полей? Как лучше подойти к решению этой задачи? Может есть другие решения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2013, 05:00:39 |
|
||
|
Как быстрее всего проверить наличие оценки пользователя (INT(11)) под сообщением (BIGINT)
|
|||
|---|---|---|---|
|
#18+
Вообще-то нужен просто один составной индекс по этим двум полям: Код: sql 1. PS.ntllctvarchar(24) в котором в hex виде будут храниться 8 байтАдъ и израиль... откройте для себя (var)binary. Но в этой задаче и варбинари не нужен, а что нужно, написано выше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2013, 06:26:56 |
|
||
|
Как быстрее всего проверить наличие оценки пользователя (INT(11)) под сообщением (BIGINT)
|
|||
|---|---|---|---|
|
#18+
Да, BINARY я ни разу не использовал. Про составной индекс пойду читать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2013, 06:34:44 |
|
||
|
Как быстрее всего проверить наличие оценки пользователя (INT(11)) под сообщением (BIGINT)
|
|||
|---|---|---|---|
|
#18+
Всё просто и отлично работает! Спасибо за информацию про составной индекс. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2013, 06:48:42 |
|
||
|
Как быстрее всего проверить наличие оценки пользователя (INT(11)) под сообщением (BIGINT)
|
|||
|---|---|---|---|
|
#18+
Прошу прощения, я пишу не по теме, однако не вижу иного способа связаться с пользователем, скрывшим свой e-mail, используя данный ресурс. Уважаемый ntllct , если я правильно понял, над каким образовательным проектом в интернете вы работаете в одиночестве, и, если вы бы не отказались услышать конструктивную критику и пожелания касательно него, а также, возможно, принять посильную безвозмездную и добровольную помощь в программировании, прошу связаться со мной по электронной почте. Мой ящик: alexander.gonchiy@gmail.com. Если же вам это не интересно или, если я всё-таки промахнулся с предполагаемым автором проекта, то можете просто проигнорировать моё сообщение. Спасибо за внимание. Модераторам: это моё единственное и последнее сообщение на данном ресурсе, очень прошу, пожалуйста, не удаляйте его, если это возможно. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2013, 02:10:59 |
|
||
|
Как быстрее всего проверить наличие оценки пользователя (INT(11)) под сообщением (BIGINT)
|
|||
|---|---|---|---|
|
#18+
Александр ЛохматовМодераторам: это моё единственное и последнее сообщение на данном ресурсеЧто ж так, последнее-то? У нас не так страшно, оставайтесь :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2013, 02:32:14 |
|
||
|
|

start [/forum/topic.php?fid=47&gotonew=1&tid=1835830]: |
0ms |
get settings: |
4ms |
get forum list: |
8ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
293ms |
get topic data: |
7ms |
get first new msg: |
4ms |
get forum data: |
2ms |
get page messages: |
30ms |
get tp. blocked users: |
1ms |
| others: | 241ms |
| total: | 594ms |

| 0 / 0 |
