решил сделать простенький форум, выглядит так
– таблица разделов форума
CREATE TABLE IF NOT EXISTS `forum_section`(
`id` INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY, – id
`content` TEXT, – описание раздела
`counter_theme` INT(11) UNSIGNED DEFAULT 0, – колво тем в разделе
`count_message` INT(11) UNSIGNED DEFAULT 0, – колво сообщений в разделе
`last_theme` VARCHAR(100) NULL, – заголовок последней добавленной темы
`last_theme_date` DATETIME, – дата последней темы
`last_theme_uid`INT(11) UNSIGNED – id юзера кто добавил
`last_theme_username` VARCHAR(20) NULL, – имя юзера
`last_theme_id` INT(11) UNSIGNED – id последней темы
)TYPE=innoDB CHARACTER SET utf8 COLLATE utf8_bin;
— таблица тем форума
CREATE TABLE IF NOT EXISTS `forum_theme`(
`id` INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY, – id
`date` DATETIME, – дата добавления
`name` VARCHAR(100), – заголовок
`section_id` INT(11) UNSIGNED, – id раздела
`last_message_date` DATETIME, – дата последнего сообщения
`last_message_uid`INT(11) UNSIGNED – id юзера кто добавил
`last_message_username` VARCHAR(20) NULL, – имя юзера
`counter_message` INT(11) UNSIGNED – колво сообщений в теме
)TYPE=MYISAM CHARACTER SET utf8 COLLATE utf8_bin;
— таблица сообщений форума
CREATE TABLE IF NOT EXISTS `forum_message`(
`id` INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY, – id
`date` DATETIME, – дата добавления
`text` TEXT, – заголовок
`theme_id` INT(11) UNSIGNED, – id темы
`user_id` INT(11) UNSIGNED – id юзера
)TYPE=MYISAM CHARACTER SET utf8 COLLATE utf8_bin;
и хочу поинтересоваться, какой тип все же лучше выбрать для таблиц!?
насколько я читал и насколько понял, то myiasm лучше использовать для статичных данных, (таблица редко обновляються и инсертится)
innodb же, блокирует отдельную строку допустим при обновлении, и скорей всего лучше использовать как раз для форума.
Но это все в теории, мне вот интересно как себя поведут, таблицы если допустим в `forum_message` будет примерно 150.000 записей (как на пыхе)),
и сделать такой стандартный запрос
SELECT * FROM `forum_message` WHERE `theme_id`=154 LIMIT 10
???
может я конечно загоняюсь, и париться по этому поводу не стоит, так как на локальной машине я пробовал делать такие таблицы с 3.000.000 записей и они работают пиздец как быстро, но все же это локальная машина, охуенные мозги и оперативка, а хостинг совсем другое….поделитесь пожайлуста опытом, ну или своими соображениями, по поводу типов таблиц….. или структуру может другую посоветуете)
– таблица разделов форума
CREATE TABLE IF NOT EXISTS `forum_section`(
    `id` INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY,– id         
    `content` TEXT,							        – описание раздела
    `counter_theme` INT(11) UNSIGNED DEFAULT 0,		– колво тем в разделе
    `count_message` INT(11) UNSIGNED DEFAULT 0,		– колво сообщений в разделе
    `last_theme` VARCHAR(100) NULL,				– заголовок последней добавленной темы
    `last_theme_date` DATETIME,					– дата последней темы
    `last_theme_uid`INT(11) UNSIGNED				– id юзера кто добавил
    `last_theme_username` VARCHAR(20) NULL,			– имя юзера
    `last_theme_id` INT(11) UNSIGNED				– id последней темы
)TYPE=innoDB CHARACTER SET utf8 COLLATE utf8_bin;
— таблица тем форума
CREATE TABLE IF NOT EXISTS `forum_theme`(
    `id` INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY,– id
    `date` DATETIME,						        – дата добавления
    `name` VARCHAR(100),						– заголовок
    `section_id` INT(11) UNSIGNED,				– id раздела 
    `last_message_date` DATETIME,				– дата последнего сообщения
    `last_message_uid`INT(11) UNSIGNED			– id юзера кто добавил
    `last_message_username` VARCHAR(20) NULL,	– имя юзера
    `counter_message` INT(11) UNSIGNED			– колво сообщений в теме 
)TYPE=MYISAM CHARACTER SET utf8 COLLATE utf8_bin;
— таблица сообщений форума
CREATE TABLE IF NOT EXISTS `forum_message`(
    `id` INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY,	– id
    `date` DATETIME,						– дата добавления
    `text` TEXT,							– заголовок
    `theme_id` INT(11) UNSIGNED,			– id темы
    `user_id` INT(11) UNSIGNED			       – id юзера
)TYPE=MYISAM CHARACTER SET utf8 COLLATE utf8_bin;