SQLinfo.ru - Все о MySQL Webew.ru: теория и практика веб-технологий

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 06.08.2014 15:29:18

animegirl
Активист
Зарегистрирован: 28.07.2011
Сообщений: 288

Советы автоматического анализатора.

Наткнулась тут в PMA на кнопку "Анализ структуры таблицы", решила запустить, PMA послал команду

SELECT *
FROM `user_realestate`
PROCEDURE ANALYSE ( )

и показал мне результат. Я немного в замешательстве, насколько стоит верить этой выдачи.
Я часто создавала столбцы для TRUE/FALSE, ставила сделать тип поля BOOLEAN, но почему-то вместо чёткого BOOLEAN создавались TININT(1) , по началу напрягало, потом забила. А эта команда мне выдала, что большинство столбцов надо сменить на ENUM (почти все). Ну если во многих местах, я ясно понимаю, что это ерунда, то вот с неудавшимися BOOLEAN я задумалась. Подскажите, имеет смысл переделывать TIN(1), задуманные изначально как BOOLEAN, в ENUM('0','1') NOT NULL ?


Скажи миру - НЯ!

Неактивен

 

#2 06.08.2014 15:49:04

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Советы автоматического анализатора.

BOOLEAN - синоним TINYINT(1). Не вижу особого смысла в переделывании его в ENUM.

Неактивен

 

#3 06.08.2014 15:57:53

animegirl
Активист
Зарегистрирован: 28.07.2011
Сообщений: 288

Re: Советы автоматического анализатора.

Я просто пытаюсь понять, в чём сила ENUM, почему движок так яростно его продвигает?
А TININT(1) это же по факту диапазон в 0-9 выходит, хотя я без понятия, чем это может быть выигрышно или проигрышно.


Скажи миру - НЯ!

Неактивен

 

#4 06.08.2014 16:05:12

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Советы автоматического анализатора.

TINYINT - диапазон от -128 до 127. Модификатор 1 используется только для отображения (сколько места выделять на экране).

Например, для запроса WHERE x=2 в случае ENUM оптимизатор сразу поймет, что результат пустой. Особого практического смысла, в данном случае нет, но иногда может быть полезно. Кроме того, ENUM - это перечень строк, поэтому WHERE x>0 работать не будет. Не будет работать и WHERE x=0, а только WHERE x='0'.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson