Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
Страницы: (3) 1 [2] 3  ( Перейти к первому непрочитанному сообщению )  
Фильтр авторов:    показать 
  скрыть
  Закрытая темаСоздание новой темыСоздание опроса

> Cелективность в составном индексе
vasa_c  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 4434
Пользователь №: 17
На форуме: 10 лет, 6 месяцев, 23 дня
Карма: 16




Итак, продолжаем нашу викторину по вопросу чем KEY(`a`,`b`,`c`) отличается от KEY (`c`,`b`,`a`). Кто же даст правильный ответ, не прибегая к умным терминам, селективность, кординалити? Все подсказки были даны.


--------------------
PMСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
GET  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



TERRAFORMING ENGINEER
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 3846
Пользователь №: 21196
На форуме: 6 лет, 9 месяцев, 2 дня
Карма: 87




vasa_c

smile.gif
А чего поле d забыл написать, из-за которго весь сыр бор?


--------------------
Не тот велик, кто не падал, а тот кто падал и поднимался.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
T1grOK  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2703
Пользователь №: 24406
На форуме: 6 лет, 1 месяц, 18 дней
Карма: 170




Цитата (Invis1ble @ 29.01.2014 - 02:29)
Цитата
Забудь про ENUM как за страшный сон. Бесполезный тип данных.

это еще почему? blink.gif

Во первых, если нужно, что-то изменить придется лезть в БД. Во вторых ENUM плохо сочетается с другими типами данных давая не самую высокую производительность при выборках.


--------------------
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
PMПисьмо на e-mail пользователюСайт пользователя
    1   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Invis1ble  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме




******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 11785
Пользователь №: 23195
На форуме: 6 лет, 4 месяца, 11 дней
Карма: 429

Трезвый :
7 лет, 3 месяца, 11 дней


Цитата
ENUM плохо сочетается с другими типами данных

можно подробней?


--------------------
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
GET  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



TERRAFORMING ENGINEER
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 3846
Пользователь №: 21196
На форуме: 6 лет, 9 месяцев, 2 дня
Карма: 87




T1grOK
Цитата
Во первых, если нужно, что-то изменить придется лезть в БД.

это к неграмотному проектировщику вопросы, а не к БД
Цитата
Во вторых ENUM плохо сочетается с другими типами данных давая не самую высокую производительность при выборках.

Пруф в студию, он не чем не отличается от них для MySQL, только более конкретен и занимает меньше места.

ИМХО smile.gif


--------------------
Не тот велик, кто не падал, а тот кто падал и поднимался.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Invis1ble  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме




******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 11785
Пользователь №: 23195
На форуме: 6 лет, 4 месяца, 11 дней
Карма: 429

Трезвый :
7 лет, 3 месяца, 11 дней


Та какие-то надуманные проблемы, по-моему. Особенно про "изменить", тут любители триггеров и хранимок обнялись, заплакавши.

Использую ENUM везде, где это уместно, и ни разу не сталкивался ни с какими проблемами. Может это конечно мне так везет, не знаю... smile.gif


--------------------
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
T1grOK  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2703
Пользователь №: 24406
На форуме: 6 лет, 1 месяц, 18 дней
Карма: 170




Цитата (ABC @ 28.01.2014 - 22:57)
Вот ради этого я пост и создал. Хотя мой тест с таблицами по 100 тыс. этого не подтвердил.

Это один из вариантов, ситуаций бывает множество, тестами все не покроешь, так что поверь на опыт людей, которые сталкивались с подобными проблемами.
Цитата (ABC @ 28.01.2014 - 22:57)
Вот, что я предположил, почему скорость должна быть разной при больших объемах.

Если первый столбец поле d - varchar - с очень высокой селективностью. В моем случае 3 строчки на 100 тысяч. Тогда для второго столбца всего 3 строки на обработку, а для последующих вообще единственная. Т.е. материал с которым придется работать MySQL совсем мал, всего 3 строчки изначально.

Если первый столбец поле a - ENUM - с очень низкой селективностью. В моем случае ~50000 строк на 100 тысяч. Тогда вплоть до самого последнего столбца будет "ворочаться" тысячи строк.

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


--------------------
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Invis1ble  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме




******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 11785
Пользователь №: 23195
На форуме: 6 лет, 4 месяца, 11 дней
Карма: 429

Трезвый :
7 лет, 3 месяца, 11 дней


Цитата
Это один из вариантов, ситуаций бывает множество, тестами все не покроешь, так что поверь на опыт людей, которые сталкивались с подобными проблемами.

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


--------------------
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
GET  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



TERRAFORMING ENGINEER
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 3846
Пользователь №: 21196
На форуме: 6 лет, 9 месяцев, 2 дня
Карма: 87




Цитата
так что поверь на опыт людей


всегда рад, когда есть тому подтверждение, например:

http://ruseller.com/lessons.php?rub=28&id=692

Цитата
Используйте  ENUM вместо VARCHAR

Столбцы типа  ENUM очень компактные и быстрые. Они хранятся в базе данных как и TINYINT, но еще они могут содержать строчные значения. Такие особенности делают их отличными кандидатами для реализации определенных полей.


+ еще куча ссылок, где все советую именно так делать.

Цитата
Хотя ENUM и противоречит нормальным формам, но, как показывают тесты, он быстрее других способов.


--------------------
Не тот велик, кто не падал, а тот кто падал и поднимался.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
T1grOK  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2703
Пользователь №: 24406
На форуме: 6 лет, 1 месяц, 18 дней
Карма: 170




Цитата (Invis1ble @ 29.01.2014 - 07:17)
Использую ENUM везде, где это уместно, и ни разу не сталкивался ни с какими проблемами.

Попробуй сравнить производительность, если делать выборку ENUM & VARCHAR, ENUM & ENUM. Скорость может отличаться в несколько раз.
Сортировка ENUM это вообще отдельная тема, так как эта операция производится по внутреннему указателю, а не по значениям, то есть придется то ли заведомо вносить значения в ENUM поле в алфавитном порядке, то ли извращаться с применением FIELD().
И по поводу обновления ENUM полей, надуманным это не считаю. Придется давать привилегии на обновление структуры таблицы, чтоб изменить значения в ENUM поле.


--------------------
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
T1grOK  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2703
Пользователь №: 24406
На форуме: 6 лет, 1 месяц, 18 дней
Карма: 170




Цитата (ABC @ 29.01.2014 - 07:35)
Используйте  ENUM вместо VARCHAR

Столбцы типа  ENUM очень компактные и быстрые. Они хранятся в базе данных как и TINYINT, но еще они могут содержать строчные значения. Такие особенности делают их отличными кандидатами для реализации определенных полей.

Я бы сказал очень определенных(избранных)....
Я на проекте отказался от enum(не спорю, что многое зависит от архитектуры приложения), при этом запросы к таблицам(а они не маленькие >34 млн. строк) ускорились в среднем на 8%.


--------------------
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Invis1ble  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме




******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 11785
Пользователь №: 23195
На форуме: 6 лет, 4 месяца, 11 дней
Карма: 429

Трезвый :
7 лет, 3 месяца, 11 дней


Цитата
Сортировка ENUM это вообще отдельная тема, так как эта операция производится по внутреннему указателю, а не по значениям

ну это как бы логично smile.gif

Цитата
Попробуй сравнить производительность, если делать выборку ENUM & VARCHAR, ENUM & ENUM.

не понял, имеешь в виду юзать в where условия по этим полям? Если да, то у меня к сожалению нет таблиц с более, чем 1 enum-полем


--------------------
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
vasa_c  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 4434
Пользователь №: 17
На форуме: 10 лет, 6 месяцев, 23 дня
Карма: 16




Ну, в примере, вместо ENUM куда лучше бы BOOL вписался. И изменить список вариантов для большой таблицы будет весьма небыстро.


--------------------
PMСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
GET  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



TERRAFORMING ENGINEER
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 3846
Пользователь №: 21196
На форуме: 6 лет, 9 месяцев, 2 дня
Карма: 87




Наткнулся на оогромную статью посвященную ENUM, точнее почему ENUM лучше не использовать, а если использовать, то когда лучше.

Все доходчиво расписано по 8 пунктам.

Статья на английском, гуглом читабельно. Также с удовольствием почитал комменты.

Читать статью


p.s. Итог, согласен с автором статьи, как и с любым из вас, прежде чем что-то использовать нужно подумать головой, а не Ж.


--------------------
Не тот велик, кто не падал, а тот кто падал и поднимался.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 15560
Пользователь №: 6543
На форуме: 8 лет, 2 месяца, 2 дня
Карма: 299

Трезвый :
5 лет, 11 месяцев, 11 дней


Позволите небольшой оффтоп?

Ребят, я с огромным интересом следил за топиком. И даже начал болеть и переживать за первенство в викторине от vasa_c

Но вот почему то все скатилось к ENUM...

Нет, статьи интересные, вопросов нет. Но вот почему то, когда вникаешь в такие диспуты, вспоминается астрономя. Особенно раздел про черные дыры. Сидят именитые, с кучей степеней и прочих регалий ученые мужи и рассуждают: а есть ли у черных дыр горизонт событий... И как он, этот горизонт, соответствует постулатам квантовой механики и не нарушает ли теорию относительности...

Вот скажите мне, человеку недалекому приземленному. Кто на практике сталкивался с проблемой ENUM. Только не так, как подавалось:

Я помню, что когда то, где то, давно-давно, было замечено, что он тормозит события на пару микросекунд.

Я про реальные проблемы.

Неужели у вас действительно больше нет проблем, чем искать черную кошку в темной комнате?

Если так, я просто вам завидую. Тут и без этого куча проблем...


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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Зачем ворошить старое, когда можно наворотить новое?

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темыСтраницы: (3) 1 [2] 3  Закрытая темаСоздание новой темыСоздание опроса