|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
26.01.2015, 18:13 | #11 | |
Форумчанин
Регистрация: 17.02.2014
Сообщений: 881
|
Цитата:
Все таки это, наверное, не то что я хотел сделать. Я могу сразу найти совпадение ip и логин этого совпадения из таблицы: Код:
то есть вместо поиска ip по сотням-тысячам значений в INT(10), сначало поиск по 1-15 вариантам loginoв во всей таблице (больше вариантов там не будет) т.е находим все ip соответствующие известному loginу, а далее из имеющихся ip найти известный, если он там есть вообще. т.е: Код:
Т.е. результаты то получатся одинаковые, но способы разные. Предполагается большое количество запросов такого рода. Последний раз редактировалось Illusiony; 26.01.2015 в 18:28. |
|
26.01.2015, 18:33 | #12 | |
Старожил
Регистрация: 31.05.2010
Сообщений: 3,301
|
Цитата:
То ip ='$ip', то ip ='$login' ..? Тебе нужно найти совпадение пары «логин + IP» – так и запрашивай именно такое совпадение в условиях запроса. Ты сам себе морочишь голову на ровном месте. |
|
26.01.2015, 18:43 | #13 | |
Форумчанин
Регистрация: 17.02.2014
Сообщений: 881
|
Цитата:
Это я сделал: Код:
вариант1) поиск по ip INT(10) Primary key вариант2) поиск по login VARCHAR(8) INDEX(`login`(8)) вариантов логинов в таблице от 1-15 ( поторяются одинаковые) то есть если в среднем около 400 одинаковых логинов на всю таблицу если в таблице около 6000 записей. а потом из этих средних 400 нахождение ip Все это нужно только для сравнения производительности. Ведь во втором случае: недостатки: поиск по текстовому полю, хоть и индексированнному плюсы: поиск по 1-15 вариантам сначало. А потом по приблизительно 400 по ip Вам возможно это сразу без тестов будет ясно либо по 6000 записям INT(10) поиск, либо поиск из двух частей по login VARCHAR(8) до 15 вариантов в таблице( в сумме средне до 400 примерно) INDEX(`login`(8)), а потом из этих 400 поиск по ip Последний раз редактировалось Illusiony; 26.01.2015 в 18:48. |
|
26.01.2015, 18:53 | #14 |
Старожил
Регистрация: 31.05.2010
Сообщений: 3,301
|
Primary key подразумевает уникальность значений.
Уникальность IP, как такового, в данном случае – вызывает серьёзные сомнения. Вот эти твои страдания – это яркий пример оптимизации там, где никакая оптимизация не нужна, совсем. |
26.01.2015, 19:18 | #15 |
Форумчанин
Регистрация: 17.02.2014
Сообщений: 881
|
оно в базу вставится только если такого нету. так что он там будет уникальным
|
26.01.2015, 19:26 | #16 | |
Старожил
Регистрация: 31.05.2010
Сообщений: 3,301
|
Цитата:
Серьёзная статистика намечается. |
|
26.01.2015, 19:35 | #17 |
Форумчанин
Регистрация: 17.02.2014
Сообщений: 881
|
Для моей задачи это не особо критично. А по другому идентифицировать будет проблематично.
|
26.01.2015, 19:49 | #18 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Задача-то какая? Что вы изобрести пытаетесь?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
26.01.2015, 20:06 | #19 |
Форумчанин
Регистрация: 17.02.2014
Сообщений: 881
|
Да ничего особенного. Возможно я и ошибаюсь, просто нужно сделать быстро, а учитывая мои скуднейшие знания, сделать по "человечески", в том смысле как настоящий программист у меня и так не получится.
Задача: В одной популярной онлайн игре ( клиентская чать игры) . Чтобы все желающие могли голосовать за выбор одного из 3х пунктов и всего 30-31 выбор на 1 колоду(это карточная онлайн игра). Будет клиентская часть на delphi 7 ( потомучто тока с ней знаком, планирую изучение WPF или аналога ). Реализовал сам выбор и должно быть не сложно связь с сервером. Человек который допускает людей к голосованию в своей игре регистрируется на сайте, получает ссылку для того чтобы дать ее всем желающим. Вот желающие заходят по ссылке без регистрации и голосуют. Тут то и проверяется их ip, чтобы они не голосовали более 1 раза за ход. Теоритически совпадений по ip должно быть немного, если и будут не особо кретично, ктото не проголосует. Но в некоторые моменты при наиболее активном голосовании, за малое время, может пойти много запросов, Вот я и стараюсь найти более менее быстрый способ организации. Не знаю на сколько быстрее будет, если таблицу с голосование сделать MEMORY ( не путать таблицу с регистрацией, она точно будет на SSD) . Но и к тому же Memory свои особенности. Но может быть если чтото получится буду думать над дальнейшей оптимизации. А сервер VDS собираюсь покупать на год за 50-100USD и на нем еще всякие эксперименты планирую делать. Это только мой первый опыт VDS и такого "проектика". Я весь "зеленый" и поэтому и ошибок и всякого может быть. Программа на delphi будет с заданной периодичностью опрашивать сервер, обнулять данные по голосованию и соответственно обнулять записи соответствующие данному логину, соответственно и id только по данному логину.А логинов в таблице зарегистрированнных вот это и число от 1 до 15 ( конечно может будет и больше) это и есть зарегистрированные, те кто будут давать ссылку на голосование. Через куки, получается человек может отдельно взять браузер в настройках поставить не оставлять куки и будет голосовать до бесконечности. Вот и VPS параллельно подбираю, есть пост в разделе Свободное общение. Если кто знает на опыте какая разницы в производительности между SSD и MEMORY при MySql запросах. Я конечно понимаю это зависит от статистики запросов и организации самих таблиц но все таки. Предпологается большое количество SELECT, а также INSERT( по 1 записи за раз), гораздо реже DELETE(сдесь пакетно удалятся все записи по голосованию до нескольких сотен( возможно и до пару тысяч). Последний раз редактировалось Illusiony; 26.01.2015 в 20:20. |
26.01.2015, 20:44 | #20 | |
Участник клуба
Регистрация: 08.03.2008
Сообщений: 1,537
|
Цитата:
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Можно ли применить функцию format в таком случае? | XE5 | Общие вопросы Delphi | 14 | 01.05.2014 03:20 |
Как сделать чтобы через форму можно было принимать почту и в таком формате - info@robot-robot. | rafshm | PHP | 7 | 11.01.2013 13:00 |
как авторизоваться в таком случае? | grafgrial | Общие вопросы Delphi | 2 | 19.09.2011 21:38 |
MySQL, dbExpress, Не работает Select | lexastik | БД в Delphi | 0 | 02.09.2011 17:43 |
Как Firefox рассчитывает ширину столбцов вот в таком случае??? | Finer | HTML и CSS | 3 | 26.04.2008 16:47 |