yeaahhh
Старатель
- Регистрация
- 8 Май 2008
- Сообщения
- 278
- Реакции
- 11
- Автор темы
- #1
Ребят, изучаю оптимизацию БД, извиняюсь за дилетантство..
Был бы благодарен, если бы кто-нибудь помог устаканить некоторые вопросы(много прочитал, хотелось бы все собрать в кучу и получить уверенность, что правильно все понял
1) Всегда необходимо указывать столбцу минимально-возможный тип данных?
пример: для id primary key, если не планируется более 65 000 записей, нужно ставить smallint(5) unsigned?
поле с id-товарами: если знаю, что товаров не более 255 будет, ставить tinyint(3) unsigned?
2) Для значений флагов в БД (1,0) оптимален tinyint(1) (он же bool)? enum не стоит(если 2 значения, он будет 2 байта жрать?)?
3) Для текстового поля (например: описание товара) оптимален text? но, что если я знаю, что текст не будет более 2 000? я могу поставить varchar (2000)? varchar же меньше байт потребляет?
4) Есть поле в БД, которое все время пустое и оно не нужно(готовый движок переделываю под себя, очень много править нужно, чтобы его удалить, пока нет времени). Какой тип данных разумнее сделать? char(0)?
5) Тип Varchar потребляет памяти исходя из длины значения в поле или то, что указывается при создании - Varchar(2000)?
Просто вчера вечером придерживался вышеуказанным правилам и наоптимизировал БД так, что по статистике хостинга, нагрузка в кол-ве времени обработки запросов возросла.. А делал вот что: было id(11) primary key -> стало smallint(5) unsigned, были varchar(3333) -> стало varchar(2000), int(1) -> tinyint(1) unsigned
Вроде все верно же?
Заранее огромное спасибо. Хочется ясности..)
Был бы благодарен, если бы кто-нибудь помог устаканить некоторые вопросы(много прочитал, хотелось бы все собрать в кучу и получить уверенность, что правильно все понял

1) Всегда необходимо указывать столбцу минимально-возможный тип данных?
пример: для id primary key, если не планируется более 65 000 записей, нужно ставить smallint(5) unsigned?
поле с id-товарами: если знаю, что товаров не более 255 будет, ставить tinyint(3) unsigned?
2) Для значений флагов в БД (1,0) оптимален tinyint(1) (он же bool)? enum не стоит(если 2 значения, он будет 2 байта жрать?)?
3) Для текстового поля (например: описание товара) оптимален text? но, что если я знаю, что текст не будет более 2 000? я могу поставить varchar (2000)? varchar же меньше байт потребляет?
4) Есть поле в БД, которое все время пустое и оно не нужно(готовый движок переделываю под себя, очень много править нужно, чтобы его удалить, пока нет времени). Какой тип данных разумнее сделать? char(0)?
5) Тип Varchar потребляет памяти исходя из длины значения в поле или то, что указывается при создании - Varchar(2000)?
Просто вчера вечером придерживался вышеуказанным правилам и наоптимизировал БД так, что по статистике хостинга, нагрузка в кол-ве времени обработки запросов возросла.. А делал вот что: было id(11) primary key -> стало smallint(5) unsigned, были varchar(3333) -> стало varchar(2000), int(1) -> tinyint(1) unsigned
Вроде все верно же?
Заранее огромное спасибо. Хочется ясности..)
Последнее редактирование: