Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Как лучше спроектировать таблицу в MySQL?
Какой вариант лучше, если будет около 10 groupid и около 2000 id?
В скрипте такая конструкция запроса: "Взять groupid где id=int". Т.е. нужно узнать группу, в которой состоит юзер. (Добавление)
Мне кажется, что лучше первый вариант, потому что 20000 строк, наверное, будет тратить больше времени на поиск. Может, я ошибаюсь? Посоветуйте.
Покинул форум
Сообщений всего: 1026
Дата рег-ции: Июнь 2011 Откуда: rostov
Помог: 9 раз(а)
На скорость не будет влиять, ну порайней мере с 2000 узерами это будет не заметно.. Давит я не понимаю как вы себе представляетд автора?! И даже как бы оно не было не получится записать все в одну строку
Покинул форум
Сообщений всего: 147
Дата рег-ции: Май 2011
Помог: 2 раз(а)
Itan пишет:
А чем это лучше?
скорость
память
удобно и функционально
Мелкий
Отправлено: 22 Октября, 2011 - 13:16:26
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
Itan пишет:
Мне кажется, что лучше первый вариант, потому что 20000 строк, наверное, будет тратить больше времени на поиск.
А теперь - посчитайте, сколько понадобится времени, чтобы выбрать всех пользователей из группы 1, например. И заодно, как вы это будете делать?
Like'ом? не забудете о том, что like '%1%' прихватит ещё 11, 12 и т.д. группы, а Like '%,1,%' не сматчит юзера с группами '1,2,3'? При том, like не использует индексы.
Однозначно второй вариант. Mysql'у и несколько млн строк - не помеха.
Покинул форум
Сообщений всего: 1026
Дата рег-ции: Июнь 2011 Откуда: rostov
Помог: 9 раз(а)
Данил_123 пишет:
И даже как бы оно не было не получится записать все в одну строку
ммм.. Давит раз вы предлогаете записать каждого в новую строку, поясните мне как сделать обратное? Или же зачем предлогать? мб возможно, но это будет выглядет страшно...
В:Для каждого юзера создать строку
О:А чем это лучше? На скорость
сильно влияет?
----- http://mysitecost.ru
Itan
Отправлено: 22 Октября, 2011 - 14:40:07
Частый гость
Покинул форум
Сообщений всего: 199
Дата рег-ции: Окт. 2008
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
Мелкий пишет:
При том, like не использует индексы
LIKE '%str%' - нет, не использует,
LIKE 'str%' - использует
у SET, увы, есть существенные ограничения (Вы уже сказали про "если до 64")
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
Данил_123
Отправлено: 22 Октября, 2011 - 15:04:25
Участник
Покинул форум
Сообщений всего: 1026
Дата рег-ции: Июнь 2011 Откуда: rostov
Помог: 9 раз(а)
просто Давит написал поместите пользователя в каждую строку.. Но иначе никак, конечно можно, но изврат получится.. А смыл слов сделать обратное заключался в том чтоб добавить всех юсеров в одну строку.. (Добавление)
капитан очевидность отдыхает (Добавление)
все хватит, надоело флудить..
----- http://mysitecost.ru
Itan
Отправлено: 22 Октября, 2011 - 17:35:35
Частый гость
Покинул форум
Сообщений всего: 199
Дата рег-ции: Окт. 2008
Помог: 0 раз(а)
Можно еще вопрос? Какие доп. данные указывать при создании таблицы по второму варианту? Где для каждого юзера своя строчка. Ну, там, примари или еще что-то?
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.