LiveInternetMail.ru
Форум русской поддержки Joomla!® CMS
27.05.2012, 16:40:16 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 1.7 FAQ Joomla 1.5 FAQ Joomla 1.0 FAQ Правила форума Новости Joomla Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор Тема: Свойство типа данных smallint или smallint(11)?  (Прочитано 1777 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
archer1981
Давно я тут
****

Репутация: +13/-0
Offline Offline

Пол: Мужской
Сообщений: 358



« : 11.12.2007, 23:50:07 »

Оптимизирую таблицы в БД. Меняю тип данных для с int(11) на smallint(11). А можно и надо ли число "11" уменьшать?
Записан
smart
Администратор
*******

Репутация: +1143/-14
Offline Offline

Пол: Мужской
Сообщений: 8204


тружусь даже во сне...


« Ответ #1 : 12.12.2007, 00:00:24 »

Никакого смысла уменьшать нет, цитирую официальную документацию (9.2. Numeric Types):

Цитировать
Another extension is supported by MySQL for optionally specifying the display width of integer data types in parentheses following the base keyword for the type (for example, INT(4)). This optional display width is used to display integer values having a width less than the width specified for the column by left-padding them with spaces.

The display width does not constrain the range of values that can be stored in the column, nor the number of digits that are displayed for values having a width exceeding that specified for the column. For example, a column specified as SMALLINT(3) has the usual SMALLINT range of -32768 to 32767, and values outside the range allowed by three characters are displayed using more than three characters.

Т.е. число в скобках влияет на количество отображаемых символов, и если значение в колонке по количеству символов меньше указанного, добивает слева пробелами... Не более того.

Кстати, не забывайте, что у типов smallint и int сильно отличаются максимальные значения. В smallint вы не сможете "засунуть" число больше чем 32767... Так что учитывайте этот фактор, при ваших оптмизиациях... Для количества пользователей, может их хватит (хотя у меня есть опыт работы с порталом на Joomla где количство пользователей во много раз превышает это число), а для каталога товаров, я бы не рисковал ставить этот тип в качестве идентифкатора.
Записан
archer1981
Давно я тут
****

Репутация: +13/-0
Offline Offline

Пол: Мужской
Сообщений: 358



« Ответ #2 : 12.12.2007, 00:04:22 »

Чтож, если каталог товаров содерждит более 32767 записей - это хороший каталог ) В любом случае, спасибо огромное за разъяснение. В таблице jos_content уже успел вооббще все int на smallint заменить... Вроде бы и категорий меньше, и разделов, и статей, и пользователей...

Хотя по логике - изменение остальных полей оптимизации никакой не даст. Только ограничение значения. Выборка то по id идёт.
Записан
maverick_den
Осваиваюсь на форуме
***

Репутация: +9/-0
Offline Offline

Пол: Мужской
Сообщений: 89


« Ответ #3 : 12.12.2007, 00:24:42 »

Чтож, если каталог товаров содерждит более 32767 записей - это хороший каталог ) В любом случае, спасибо огромное за разъяснение. В таблице jos_content уже успел вооббще все int на smallint заменить... Вроде бы и категорий меньше, и разделов, и статей, и пользователей...

Хотя по логике - изменение остальных полей оптимизации никакой не даст. Только ограничение значения. Выборка то по id идёт.
Да че-то я лично сильно сомневаюсь что оно вообще чего-то даст.
Записан
smart
Администратор
*******

Репутация: +1143/-14
Offline Offline

Пол: Мужской
Сообщений: 8204


тружусь даже во сне...


« Ответ #4 : 12.12.2007, 00:45:43 »

Да че-то я лично сильно сомневаюсь что оно вообще чего-то даст.
ну какие-то копейки конечно даст, но не серьезно... если уж и заниматься оптимизацией, то надо брать полный список запросов, анализировать их планы выполнения, корректировать индексы, сами запросы, оптимизировать конфигурацию самого MySQL - вот по этому пути можно достичь приличных результатов, а типы менять - больше времени потратите, чем выиграете...
Записан
beliyadm
Профи
********

Репутация: +1438/-61
Offline Offline

Пол: Мужской
Сообщений: 8893


Севастополь==Россия


« Ответ #5 : 12.12.2007, 02:03:06 »

ну начнем с того что авторы многих компонентов не брезгуют писать
SELECT * FROM ....
когда на деле надо всего пару полей вытащить, а если там и связанные таблицы присутствуют, то вообще ахтунг
На мелких сайтах это незаметно, но вот на серьезных надо просматривать все запросы к БД в каждом файле, как правильно заметил smart - начать с оптимизации самих запросов, а после уж и базы
Записан
archer1981
Давно я тут
****

Репутация: +13/-0
Offline Offline

Пол: Мужской
Сообщений: 358



« Ответ #6 : 12.12.2007, 11:15:58 »

В общем, надо плотно заняться mysql
Записан
smart
Администратор
*******

Репутация: +1143/-14
Offline Offline

Пол: Мужской
Сообщений: 8204


тружусь даже во сне...


« Ответ #7 : 12.12.2007, 12:33:24 »

В общем, надо плотно заняться mysql
это уже зависит от конкретной задачи... могу с уверенностью сказать, что задача оптимизации настолько увлекательна, что ей можно посвятить уйму времени... некоторые люди всю жизнь что-то оптимизируют... главное во-время остановиться, а для этого необходимо четко определить границы оптимизации
Записан
archer1981
Давно я тут
****

Репутация: +13/-0
Offline Offline

Пол: Мужской
Сообщений: 358



« Ответ #8 : 12.12.2007, 12:38:06 »

Ну да. Это как ремонт в квартире. Его невозможно закончить, можно только остановить. Есть много общего ))
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Рейтинг@Mail.ru Rambler Top100 Powered by SMF 1.1.16 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet