_> Я уж не говорю, что на реально сложном запросом на несколько экранов поделка MySQL загнется — оптимизатор зачаточный. Ну как хотя-бы с запросиком на несколько... 10 джойнов?
Оптимизатор Мускуля и ен может быть незачаточным. Потому что он может оптимизировать сколько ему влезет, а потом напорется на движок.
Например, InnoDB не умеет быстро выполнять запрос SELECT COUNT(*) FROM table_name. Все. И пусть у MySQL будет хоть мегаоптимизатор, на InnoDB этот щзапрос выполнится где-то за O(m.n), где m — размер записи, а n — количество записей. И хоть ты убейся.
Так что десять джойнов могут спокойно упереться не только в оптимизатор, но и в движок
Здравствуйте, mrTwister, Вы писали:
T> T>> ___>Ах да, в MySQL со стандартом плохо, говорят не дотягивает даже до SQL-86.
T> T>> Давай по пунктам. Чего именно из стандарта нет в MySQL.
T> M>Здесь: http://troels.arvin.dk/db/rdbms/
T> Ну и?
Что ну и? Был вопрос:
Давай по пунктам. Чего именно из стандарта нет в MySQL.
Здравствуйте, Mamut, Вы писали:
M>Что ну и? Был вопрос: M>
M>Давай по пунктам. Чего именно из стандарта нет в MySQL.
M>Ответ на этот вопрос получен?
Ты вообще читал, о чем там речь шла? Человек утверждал, что MySQL плохо поддерживает стандарт (очевидно _d_m_ имел ввиду хуже, чем MSSQL) и что он не поддерживает даже SQL86.
Здравствуйте, mrTwister, Вы писали:
T> M>Что ну и? Был вопрос: T> M>
T> M>Давай по пунктам. Чего именно из стандарта нет в MySQL.
T> M>
T> M>Ответ на этот вопрос получен?
T> Ты вообще читал, о чем там речь шла? Человек утверждал, что MySQL плохо поддерживает стандарт (очевидно _d_m_ имел ввиду хуже, чем MSSQL) и что он не поддерживает даже SQL86.
Я могу еще раз. И по буквам. Я привычный.
___>Ах да, в MySQL со стандартом плохо, говорят не дотягивает даже до SQL-86.
T> Давай по пунктам. Чего именно из стандарта нет в MySQL.
Здравствуйте, criosray, Вы писали:
c> AB>Тем, кому нужно только поле типа GUID, тем придется или править код или найти другой сервер БД. Проблемы тут я не вижу. c> Не замечаете противоречия в своих словах?
Здравствуйте, Anton Batenev, Вы писали:
AB>Здравствуйте, Mamut, Вы писали:
M>> Например, InnoDB не умеет быстро выполнять запрос SELECT COUNT(*) FROM table_name. Все.
AB>
AB>Конечно, у подобного решения есть недостаток в виде того, что это оценочное значение, однако, на больших числах погрешность обычно вполне приемлемая.
Да-да я считал таким образом кол-во строк, а затем кто-то другой вставил в таблицу записей такое же кол-во как и было в таблице. Вобщем, очередные костыли.
PS: Да большинство фич MySQL — вроде нормальное яблоко, ан нет — сердцевинка то гнилая. А если мне надо точно знать число строк? А если на основе этого числа я в транзакции произвожу дальнейшие действия?
AB>Поддерживает, но не в типе поля. Это мы уже выяснили. Т.е. те, кто хочет воспользоваться приемуществами UUID, те им могут пользоваться уже сейчас. Тем, кому нужно только поле типа GUID, тем придется или править код или найти другой сервер БД. Проблемы тут я не вижу.
Здравствуйте, _d_m_, Вы писали:
___>PS: Да большинство фич MySQL — вроде нормальное яблоко, ан нет — сердцевинка то гнилая. А если мне надо точно знать число строк? А если на основе этого числа я в транзакции произвожу дальнейшие действия?
Ну считай через SELECT count(*)... — это будет не медленнее, чем на Oracle\MSSQL, так как алгоритмическая сложность одинаковая. Mamut упомянул это в контексте того, что на MyIsam select count(*) работает за O(1), потому что там другая архитектура.
Здравствуйте, mrTwister, Вы писали:
T> ___>PS: Да большинство фич MySQL — вроде нормальное яблоко, ан нет — сердцевинка то гнилая. А если мне надо точно знать число строк? А если на основе этого числа я в транзакции произвожу дальнейшие действия?
T> Ну считай через SELECT count(*)... — это будет не медленнее, чем на Oracle\MSSQL, так как алгоритмическая сложность одинаковая. Mamut упомянул это в контексте того, что на MyIsam select count(*) работает за O(1), потому что там другая архитектура.
Я об этом и говорю — что бардак с движками не позволяет MySQL'ю даже иметь нормальный оптимизатор запросов
Здравствуйте, Mamut, Вы писали:
M>По ссылке все написано. SQL-2008 не поддерживает никто, естественно. Но это не относится к ответу на вопрос «Где MySQL не дотягивает до стандарта»
Была претензия к MySQL, что мол он плохо стандарты поддерживает. Как выяснилось, не хуже остальных.
Здравствуйте, _d_m_, Вы писали:
_> PS: Да большинство фич MySQL — вроде нормальное яблоко, ан нет — сердцевинка то гнилая. А если мне надо точно знать число строк? А если на основе этого числа я в транзакции произвожу дальнейшие действия?
Можешь описать простой use-case(ы) где жизненно необходимо точное (именно точное) знание количества строк? Пример с SELECT COUNT(*) очень наглядный для объяснения некоторых вещей, а я так до сих пор не могу придумать хорошего примера, когда нельзя пользоваться оценочным. Был бы благодарен.
Здравствуйте, _d_m_, Вы писали:
_> AB>Поддерживает, но не в типе поля. Это мы уже выяснили. Т.е. те, кто хочет воспользоваться приемуществами UUID, те им могут пользоваться уже сейчас. Тем, кому нужно только поле типа GUID, тем придется или править код или найти другой сервер БД. Проблемы тут я не вижу. _> Ну вот и пришли к консенсусу
Здравствуйте, mrTwister, Вы писали:
T>Здравствуйте, Mamut, Вы писали:
M>>Я об этом и говорю — что бардак с движками не позволяет MySQL'ю даже иметь нормальный оптимизатор запросов
T>Ну дак _d_m_ очевидно решил, что на MSSQL select count(*) работает быстрее и с радостью пустился поливать говном MySQL
Здравствуйте, Anton Batenev, Вы писали:
AB>Здравствуйте, _d_m_, Вы писали:
_>> PS: Да большинство фич MySQL — вроде нормальное яблоко, ан нет — сердцевинка то гнилая. А если мне надо точно знать число строк? А если на основе этого числа я в транзакции произвожу дальнейшие действия?
AB>Можешь описать простой use-case(ы) где жизненно необходимо точное (именно точное) знание количества строк? Пример с SELECT COUNT(*) очень наглядный для объяснения некоторых вещей, а я так до сих пор не могу придумать хорошего примера, когда нельзя пользоваться оценочным. Был бы благодарен.
Сходу, что за 5 секунд в голову пришло — пэйджинг с навигацией по номеру страницы для последних страниц будет косячить.