SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 24.09.2010 17:05:07

tazododu
Завсегдатай
Зарегистрирован: 24.09.2010
Сообщений: 51

таблица с большим кол-ом столбцев

Здравствуйте!!
Имеется следующий вопрос с профессионалам, работающим с большими базами данных.

Создал таблицу с почти 50 столбцами.
Table Create Table
------ ------------------------------------------------------------------------------------
firms CREATE TABLE `firms` (
`idcompany` mediumint(6) unsigned NOT NULL auto_increment,
`sellerkod` varchar(15) NOT NULL,
`fullname` varchar(150) NOT NULL,
`name_prefix` varchar(64) NOT NULL,
`name_other` varchar(128) NOT NULL default '',
`tels_firm` varchar(150) NOT NULL default '',
`fax` varchar(30) NOT NULL,
`mail` varchar(150) NOT NULL default '',
`site` varchar(150) NOT NULL default '',
`skype` varchar(32) NOT NULL,
`license_name` varchar(250) NOT NULL,
`stadofreklam` tinyint(1) NOT NULL,
`stadofreklam_access` smallint(3) unsigned NOT NULL,
`theme_id` smallint(3) NOT NULL,
`manager_id` smallint(3) NOT NULL,
`contact_name` varchar(150) default NULL,
`sell_products` varchar(250) NOT NULL,
`main_page` text NOT NULL,
`about_page` text NOT NULL,
`icq` int(12) unsigned default NULL,
`domain` varchar(20) NOT NULL,
`domain_type` tinyint(1) unsigned NOT NULL default '0',
`balance` float(8,2) NOT NULL default '0.00',
`stat_pay` tinyint(2) NOT NULL,
`news_pay` tinyint(2) NOT NULL,
`tariff` tinyint(1) NOT NULL,
`photo_is` tinyint(1) unsigned default '0',
`status` tinyint(1) unsigned default NULL,
`title` varchar(100) default '',
`header` varchar(100) default '',
`header_height` int(3) unsigned default '120',
`favicon` mediumint(1) default NULL,
`column_goods` tinyint(1) unsigned default '3',
`column_showcase` tinyint(1) unsigned default '3',
`search_name` varchar(30) default '''Поиск товаров и услуг''',
`showcase_name` varchar(30) default '''Витрина''',
`home_name` varchar(30) default '''Главная''',
`goods_name` varchar(30) default '''Товары и услуги''',
`about_name` varchar(30) default '''О нас''',
`contacts_name` varchar(30) default '''Контакты''',
PRIMARY KEY (`idcompany`),
KEY `NewIndex3` (`theme_id`,`manager_id`,`stadofreklam_access`),
KEY `stadofreklam` (`stadofreklam`),
FULLTEXT KEY `fullname` (`fullname`),
FULLTEXT KEY `words` (`sell_products`,`fullname`,`name_other`,`sellerkod`)
) ENGINE=MyISAM AUTO_INCREMENT=11986 DEFAULT CHARSET=utf8

с разными условиями и по разным полям в ней будет происходить фултекстный поиск.

вопрос такой: следует ли мне разбить таблицу на 2(согласно логике использования столбцов) или можно оставить как есть?

и вообще сколько максимально столбцов вообще рекомендуется использовать в одной таблице чтобы в перспективе работа с ней была быстрее при большом кол-ве записей?

Неактивен

 

#2 26.09.2010 19:47:00

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: таблица с большим кол-ом столбцев

Разбивать таблицы следует, руководствуясь логикой приложения, а не
абстрактным «делаем не более 10 колонок». Так если Вы после полно-
текстового поиска будете доставать данные из всех столбцов, то, разу-
меется, разбивать таблицу не стоит: Вы все равно будете обращаться
к обеим.

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

А что касается количества строк — запланируйте шардирование изна-
чально, а всё остальное оптимизируйте уже по мере накопления данных.

Неактивен

 

#3 28.09.2010 09:39:36

tazododu
Завсегдатай
Зарегистрирован: 24.09.2010
Сообщений: 51

Re: таблица с большим кол-ом столбцев

Спасибо за советы, почитаю про шардирование. Никогда о таком даже не слышал...

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson