Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Количество полей в таблице и производительность, Как влияет $1 на $2 
:(
    Опции темы
02077461
Дата 2.4.2007, 17:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 183
Регистрация: 13.7.2005

Репутация: нет
Всего: 0



Привет,  у меня возник вопрос по производительности MySQL сервера:
есть структура, содержащая много полей. Поля логически разбиты на некоторые группы, в частности адрес_типа1 (7 полей), адрес_типа2(4 поля).
Как лучше проектировать систему:
1) все поля в одной таблице, делать выборку по нужным полям.
2) Создать дополнительные таблицы, делать выборку JOIN`ом.

И вообще, как влияет количество полей в таблице на производительность сервера?..
Заранее спасибо.
PM   Вверх
AntonSaburov
Дата 2.4.2007, 18:37 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: нет
Всего: 118



Из одной таблицы всегда быстрее вытаскивать данные - но в то же время это редкость - часто приходится делать JOIN. Даже в случае один-к-одному - бывает, что данных не так много в каком-либо столбце и лишняя память съедается.
Да и некоторые сервера имеют ограничения на размер записи (соотв-но и количество полей)

Надо смотреть по задаче
PM MAIL WWW ICQ   Вверх
SergeBS
Дата 4.4.2007, 12:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1111
Регистрация: 10.6.2005
Где: Владимир

Репутация: 2
Всего: 22



02077461
Читай насчет нормальных форм. Т.е. любую книжку по СУБД, в которой есть слова "нормальная форма", "нормализация"... Иначе дров наломаешь.
PM MAIL   Вверх
02077461
Дата 4.4.2007, 15:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 183
Регистрация: 13.7.2005

Репутация: нет
Всего: 0



Спасибо за совет. Буду просвещаться.
PM   Вверх
anurbol
Дата 14.9.2010, 08:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 106
Регистрация: 30.5.2007
Где: Алматы, Казахстан

Репутация: нет
Всего: нет



Решил продолжить тему, а не создавать новую. Считаю тему нераскрытой! Люди, очень интересует сабж, очень очень важно. Сейчас проектируется бд, и очень важно решить, будут ли храниться данные, не очень относящиеся друг к другу, в одной таблице но с 100 полями, либо в 2-х логически разделенных но с полями по 50 в каждой? Понятно что второй вариант намного лучше в плане нормализации, однако он потребует очень сильной корректировки движка что очень геморно. 

Вопрос: как сильно влияет, и влияет ли вообще количество полей в таблице на производительность, даже если не использовать SELECT *, а только SELECT needed_field1, needed_field2, needed_field3
PM MAIL   Вверх
Akina
Дата 14.9.2010, 08:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 106
Всего: 454



Надеюсь, тебе не нужна прописная истина, что "если выбросить из таблицы все поля, не использованные в запросе, будет получена максимальная скорость обработки"?
Так вот - твой вопрос без кучи дополнительных данных лишён смысла.
На ответ будет влиять как соотношение количества запросов к одной/двум таблицам, так и количество в среднем выбираемых записей, процент кэшированных данных, повторяемость запросов и кэширование результатов, количество клиентов и погода на Марсе ... в общем, ТОЛЬКО опытным путём можно узнать, каково влияние в каждом отдельном конкретном случае. 
Но и оно может одним махом поменяться от незначительных на первый взгляд изменений.
В общем случае - разделение 1:1 следует однозначно рекомендовать, когда существуют устойчивые группы наборов полей выборки, позволяющие не затрагивать одну или несколько частей совокупного набора данных.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
anurbol
Дата 14.9.2010, 08:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 106
Регистрация: 30.5.2007
Где: Алматы, Казахстан

Репутация: нет
Всего: нет



спасибо за ответ. буду наверное разделять, но это такой геморрой....
PM MAIL   Вверх
Akina
Дата 14.9.2010, 08:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 106
Всего: 454



Цитата(anurbol @  14.9.2010,  09:44 Найти цитируемый пост)
это такой геморрой

Ой, да ладно... в чём?
Выполняем разделение данных на несколько таблиц. Пишем вьювы, объединяющие данные и представляющие их так, как будто структура не поменялась (а вьюв 1:1 - однозначно обновляемый). После чего спокойно, не останавливаясь, пишем новый код сразу на новую структуру, а существующий плавно переделываем со старой структуры на новую. Когда всё переделано - просто прибиваем вьюхи.



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
anurbol
Дата 14.9.2010, 08:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 106
Регистрация: 30.5.2007
Где: Алматы, Казахстан

Репутация: нет
Всего: нет



Цитата

пишем новый код сразу на новую структуру

вот это и есть самое сложное, дело в том что, движок с которым я имею дело, сделан для того чтобы угодить чайникам, чтобы все делалось с админки, поэтому в одной из таблиц столбцы прирастают и убывают динамически. но это не важно.

Добавлено через 44 секунды
вопрос как бэ закрыт, но ценные советы и ответы будут приветствоваться.
PM MAIL   Вверх
hail
Дата 25.9.2010, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 26.1.2007

Репутация: нет
Всего: нет



зависит от цели. Если количество данных планируется хранить большое и пользователей много и всем информация нужна сразу и ждать просто не как нельзя  -  тогда нормализация. Здесь кратко:
http://www.wwwmaster.ru/article.php?nart=21  . А если это не проблема - то какая разница. Но делать нормализацию - это красиво
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.0817 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.