Каково различие (будучи примененным к моему коду) между INT (10) и INT (12)?

Проблема с ActiveRecord состоит в том, что запросы, которые он автоматически генерирует для Вас, могут вызвать проблемы производительности.

Вы заканчиваете тем, что делали некоторые неинтуитивные приемы для оптимизации запросов, которые оставляют Вас задающийся вопросом, было ли время больше эффективное для записи запроса вручную во-первых.

6
задан Community 23 May 2017 в 10:30
поделиться

3 ответа

Краткий ответ: нет никакой разницы.

Ширина отображения передается обратно в «метаданных». Приложение может использовать его. Обычно это просто игнорируется. Я не думаю, что вы можете получить это с помощью функций mysql, но вы можете сделать это с помощью mysqli, используя mysqli_fetch_field_direct .

7
ответ дан 8 December 2019 в 03:39
поделиться

Аргумент для целочисленных типов в MySQL не влияет на хранение данных или диапазон значений, поддерживаемых каждым типом данных.

Аргумент применяется только к ширине отображения, которая может быть используется приложениями, как упоминает Джонатан Фингланд. Он также появляется при использовании в сочетании с опцией ZEROFILL :

CREATE TABLE foo (
  i INT(3) ZEROFILL, 
  j INT(6) ZEROFILL, 
  k INT(11) ZEROFILL
);
INSERT INTO foo (i, j, k) VALUES (123, 456, 789);
SELECT * FROM foo;

+------+--------+-------------+
| i    | j      | k           |
+------+--------+-------------+
|  123 | 000456 | 00000000789 |
+------+--------+-------------+

Посмотрите, как ZEROFILL обеспечивает заполнение данных нулями по крайней мере до количества цифр, равного целому числу. аргумент типа.

Без ZEROFILL данные дополняются пробелами, но, поскольку пробелы все равно часто обрезаются, различие увидеть труднее.

Как это влияет на ваш PHP-код? Никто. Если вам нужно вывести столбчатые данные или значения с пробелами или нулями, более гибко можно использовать sprintf () ,

17
ответ дан 8 December 2019 в 03:39
поделиться

Вам не нужно ничего менять, поскольку это не влияет на возвращаемые данные. Информация может быть использована приложениями, которые хотят ее использовать.

См. http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html

Поддерживается другое расширение. MySQL для необязательного указания ширины отображения целочисленных типов данных в скобках после основного ключевого слова для типа (например, INT (4)). Эта необязательная ширина отображения может использоваться приложениями для отображения целочисленных значений, ширина которых меньше ширины, указанной для столбца, путем заполнения их пробелами слева. (То есть эта ширина присутствует в метаданных, возвращаемых с наборами результатов. Используется она или нет, зависит от приложения. )

Ширина отображения не ограничивает ни диапазон значений , которые могут быть сохранены в столбце, ни количество цифр, которые отображаются для значений, ширина которых превышает указанную для столбца. . Например, столбец, указанный как SMALLINT (3), имеет обычный диапазон SMALLINT от -32768 до 32767, а значения вне диапазона, разрешенного тремя символами, отображаются с использованием более трех символов.

(выделено мной)

4
ответ дан 8 December 2019 в 03:39
поделиться
Другие вопросы по тегам:

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