Задавайте вопросы, мы ответим
Вы не зашли.
Здравствуйте!!
Имеется следующий вопрос с профессионалам, работающим с большими базами данных.
Создал таблицу с почти 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(согласно логике использования столбцов) или можно оставить как есть?
и вообще сколько максимально столбцов вообще рекомендуется использовать в одной таблице чтобы в перспективе работа с ней была быстрее при большом кол-ве записей?
Неактивен
Разбивать таблицы следует, руководствуясь логикой приложения, а не
абстрактным «делаем не более 10 колонок». Так если Вы после полно-
текстового поиска будете доставать данные из всех столбцов, то, разу-
меется, разбивать таблицу не стоит: Вы все равно будете обращаться
к обеим.
Если же таблица по логике бьется на две независимые, то тогда их сле-
дует разбить, для того, чтобы получить нормализованные данные.
А что касается количества строк — запланируйте шардирование изна-
чально, а всё остальное оптимизируйте уже по мере накопления данных.
Неактивен
Спасибо за советы, почитаю про шардирование. Никогда о таком даже не слышал...
Неактивен