Апокалипсис
тех дир matras.ru
Оптимизация - из 400 таблиц -> одну
Здравствуйте.
Ситуация такая. Есть крупный проект наподобии Яндекс Маркета.
В базе 400 таблиц. В каждой таблице от 1 до 2000 записей. В итоге около 200 000 записей и уже тормозит.
Майадмин открывает базу с этими таблицами за 15 сек.
Вообщем приняли решение переписывать проект и сделать из 400 таблиц - 1.
Сейчас все таблицы price_ имеют такую структуру:
[sql]
CREATE TABLE `price9` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
`companyid` int(11) DEFAULT NULL,
`marked` tinyint(4) DEFAULT NULL,
`retail` float DEFAULT NULL,
`wholesale` float DEFAULT NULL,
`borntime` int(11) DEFAULT NULL,
`url` varchar(255) NOT NULL DEFAULT '',
`picture` varchar(255) NOT NULL DEFAULT '',
PRIMARY KEY (`id`),
KEY `name_3` (`name`),
FULLTEXT KEY `name` (`name`),
FULLTEXT KEY `name_2` (`name`)
) ENGINE=MyISAM ;
[/sql]
Опредление чему принадлежит таблица идёт след образом:
телевизоры price5
холодильники price10
моб. телефоны price200
Планируется все товары хранить в 1 таблице сделать поле id товара. Назначить каждому товару id и цеплять так.
Вопрос таков:
1. Правильно ли я мыслю?
2. Какую посоветуете структуру (планируемое число записей 1 000 000) ?
Здравствуйте.
Ситуация такая. Есть крупный проект наподобии Яндекс Маркета.
В базе 400 таблиц. В каждой таблице от 1 до 2000 записей. В итоге около 200 000 записей и уже тормозит.
Майадмин открывает базу с этими таблицами за 15 сек.
Вообщем приняли решение переписывать проект и сделать из 400 таблиц - 1.
Сейчас все таблицы price_ имеют такую структуру:
[sql]
CREATE TABLE `price9` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
`companyid` int(11) DEFAULT NULL,
`marked` tinyint(4) DEFAULT NULL,
`retail` float DEFAULT NULL,
`wholesale` float DEFAULT NULL,
`borntime` int(11) DEFAULT NULL,
`url` varchar(255) NOT NULL DEFAULT '',
`picture` varchar(255) NOT NULL DEFAULT '',
PRIMARY KEY (`id`),
KEY `name_3` (`name`),
FULLTEXT KEY `name` (`name`),
FULLTEXT KEY `name_2` (`name`)
) ENGINE=MyISAM ;
[/sql]
Опредление чему принадлежит таблица идёт след образом:
телевизоры price5
холодильники price10
моб. телефоны price200
Планируется все товары хранить в 1 таблице сделать поле id товара. Назначить каждому товару id и цеплять так.
Вопрос таков:
1. Правильно ли я мыслю?
2. Какую посоветуете структуру (планируемое число записей 1 000 000) ?