@MrOnatsky

Как поступить с таблицей?

Здравствуйте! Подскажите, как поступить правильно. Есть таблица с аккаунтами, и в общей сложности в ней 20 столбцов на данный момент. Логины, пароли, телефоны, емейлы и т.д. Но помимо всех данных есть имя пользователя, никнейм, id аватара, id баннера и онлайн. В основном SELECT'ы только их достают. А другие данные будут редко задействованы в каких-либо операциях (в редактировании профиля и при входе на сайт). Тип таблицы InnoDB. Так вот в чем собственно вопрос: имеет ли смысл создать вторую таблицу, но только с теми данными которые будут часто доставаться. И если да, то лучше использовать MyISAM или InnoDB?

Увеличит ли это производительность, и стоит ли так делать?

И второй вопрос: как сделать запись в одну таблицу сразу же после выполнения записи в другую таблицу? При этом нужно знать сохранить один и тот же айдишник у них. К примеру сделали мы инсерт в аккаунты, добавился пользователь с айдишником 2, и нужно сразу же после этого создать запись в таблице с настройками пользователей с айдишником 2.

Заранее спасибо! ^_^

P.S. Все селекты будут состоять из одних интов, и только двух варчаров (до 32 символов). А так же таблица будет одна из основных по нагрузке. Данные из нее будут часто доставаться. Для страниц пользователей будут использоваться.
  • Вопрос задан
  • 171 просмотр
Решения вопроса 1
Wolfnsex
@Wolfnsex Куратор тега PHP
Если не хочешь быть первым - не вставай в очередь!
Здравствуйте!
Здравствуйте!

имеет ли смысл создать вторую таблицу, но только с теми данными которые будут часто доставаться
В MySQL - да, в PostgreSQL возможно, я порекомендовал бы Вам использовать для этого наследование. НО! крайне важно понимать, что смысл таких операций есть только в тех случаях, если Вам действительно нужно увеличить производительность, то есть, производительности на данный момент, по какой-то причине не хватает (и никаким другом способом или в виду неких соображений, её увеличить нельзя) и Вам нужно её увеличить. В иных случаях, плодить лишние связи, крайне не рекомендуется. Не зависимо от того, MySQL это либо какая-то иная БД.

*из личных наблюдений: чем меньше таблица в MySQL (в плане объёма на диске) - тем быстрее выборка, не зависимо от того, участвую ли "лишние" поля в этой выборке или нет.

И если да, то лучше использовать MyISAM или InnoDB?
Быстрее - MyISAM, надёжнее (+ там ещё транзакции всякие поддерживаются, и прочие плюшки) - InnoDB. Лучше - ?.

как сделать запись в одну таблицу сразу же после выполнения записи в другую таблицу?
Наверное, с помощью триггера или транзакции. Не понимаю суть Вашего вопроса.

При этом нужно знать сохранить один и тот же айдишник у них.
Для этого есть LAST_INSERT_ID().
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы