Форум программистов CodeGuru
22 Июнь 2018, 03:56:49 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Войти
Новости:
 
   Начало   Помощь Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: Что лучше, несколько мелких таблиц или одна крупная?  (Прочитано 18632 раз)
0 Пользователей и 1 Гость смотрят эту тему.
freelander
Новичок
*
Офлайн Офлайн

Сообщений: 4


Просмотр профиля
« : 23 Декабрь 2009, 16:31:07 »

Здравствуйте уважаемые пользователи форума! Помогите советом. Проектирую базу данных на MySQL, задался простым, но очень важным вопросом - что лучше, одна большая таблица или много маленьких? (с точки зрения дальнейшей обработки и пр.). Допустим есть данные их можно поместить в 1 таблицу 100 000 записей или в 100 по 1000 или в 10 по 10000. Будет стандартная работа с базой: добавление, удаление, несложный поиск в ней.
И еще, скажите пожалуйста сколько записей в таблице в MySQL максимально допустимо?
Спасибо большое, жду ответов от знающих людей.
Записан
freelander
Новичок
*
Офлайн Офлайн

Сообщений: 4


Просмотр профиля
« Ответ #1 : 23 Декабрь 2009, 16:58:38 »

Смысл в том что есть однотипные записи их можно хранить в одной таблице или в нескольких, потому что логически записи будут большими группами. есть ли смысл эти записи делить на таблицы по этим группам, простой пример есть записи допустим по городам, стоит ли делать для каждого города отдельную таблицу если для каждого такого города будет по 10 000 записей. То есть для 10 городов 100 000записай, но вобще городов может быть больше 10 например 40 или 50. Более всего важна именно выборка из таблиц, поиск второстепенная задача и не особо важен Или все записи в том числе из разных городов слоить в одну кучу, или раскидать по отдельным таблицам.
Записан
freelander
Новичок
*
Офлайн Офлайн

Сообщений: 4


Просмотр профиля
« Ответ #2 : 23 Декабрь 2009, 17:05:39 »

хотел еще добавить, что про нормализацию речи не идет, меня интересует вопрос именно с физической точки зрения - скорость выборки главное.
Записан
freelander
Новичок
*
Офлайн Офлайн

Сообщений: 4


Просмотр профиля
« Ответ #3 : 23 Декабрь 2009, 17:41:14 »

Города я просто так привел, как бы логически если делить. но смысл не в том. Есть объем данных которому не нужна нормализация и так далее. Добавление новых данных и прочее мы сейчас не рассматриваем. Есть объем данных, положим он не меняется. мне нужно выбирать массивы данных из этого набора. где это быстрее будет происходить из таблицы размерностью 100 000 записей, или из 10 таблиц размерностью 10 000 записей.

Важное замечание: выборка всегда только из ОДНОЙ  таблицы.  То есть если я делю на 10 то выбирать мне нужно будет только из одной, мне известной таблицы. А не из нескольких. По сути вопрос сводиться к тому откуда будет выборка быстрее из большой или из маленькой таблицы. Ответ очевиден, из маленькой, но мне важна именно разница скоростей, на сколько она будет существенна, или наоборот пренебрежительно мала. Интересует именно если таблица будет довольно таки большой в 300 000 тыщ записей.
Записан
3V
Администратор
Ветеран
*****
Офлайн Офлайн

Сообщений: 1347



Просмотр профиля WWW
« Ответ #4 : 25 Декабрь 2009, 19:15:30 »

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

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

В общем, если нужные поля проиндексированы, то разница во времени выборки из 10000 и 300000 записей будет не существенна.

Если так уж хочется "оптимизировать" БД, то стоит рассмотреть возможность использования в таблице записей фиксированной длины, включить кэширование запросов и почаще перестраивать индексы.

Можно также использовать какие либо технологии кэширования данных в памяти (Memcached).

З.Ы. если время выборки критично, то можно отказаться от использования SQL-баз данных (есть и другие решения типа memcachedb - это Memcached + Berkeley DB).
Записан

Страниц: [1]   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2015, Simple Machines Valid XHTML 1.0! Valid CSS!