решил сделать простенький форум, выглядит так
– таблица разделов форума
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;