Форум → Программирование → PHP для идиотов → Говнокод или как писать не стоит
Говнокод или как писать не стоит
Страницы: ← Предыдущая страница →
-
6 февраля 2010 г. 17:36, спустя 2 минуты 11 секунд
id IN(1, 10, 100, ..)
и
id=1 or id=10 or id=100 or …
Это одно и тоже. Просто первое более семантично и компактно. Оптимизатор в итоге приведет к одному виду. Кто не верит, смотрите план запроса… -
6 февраля 2010 г. 17:42, спустя 6 минут 26 секунд
а такое чтото?
id IN(1, 10, 100, ..)
и
id=1 or id=10 or id=100 or …
Это одно и тоже. Просто первое более семантично и компактно. Оптимизатор в итоге приведет к одному виду. Кто не верит, смотрите план запроса…
в общем говном это я назвал по причине того, что пару раз сталкивался с ситуацией что такой подход "or" не использует индексы, по крайней мере составные. примари кей может он и будет юзать. но составной вроде как не особо :) на 5ой версии было дело, в то время мы с человеком еще соптимизировали такой запрос на union select ведь по сути or = union select * from users where id = 1 union select * from users where id = 2 union select …select * from users where active=1 and (id = 1 or id=2 or id=3 or id=4 or id=5)
Спустя 44 сек.union select юзал индексы и мы были счастливы :)
проверять влом но я уверен в "узколобости" мускуля, сталкивался не разСапожник без сапог -
6 февраля 2010 г. 17:53, спустя 11 минут 8 секунд
Тема: не стоИт или как писать говнокод
по старому опыту - OR действительно провоцирует full scan. на автомате стараюсь его избегать. в mysql не проверялιιlllιlllι унц-унц -
6 февраля 2010 г. 17:55, спустя 2 минуты 6 секунд
ну уж фуллскан ты загнул конечно)
Тема: не стоИт или как писать говнокод
по старому опыту - OR действительно провоцирует full scan. на автомате стараюсь его избегать. в mysql не проверял
другие то индексы может юзать, просто на максимум не будет отдачиСапожник без сапог -
-
6 февраля 2010 г. 22:19, спустя 3 часа 38 минут 49 секунд
для поулчения кучи значений по ID используется конструкцияSELECT * FROM `users` WHERE `id` IN (1,2,3,4,5,6,7,8,9,10)
этот вариант использует все плюсы мускуля, и не создает форичей. если id - primary key то такая выборка хоть из десятков миллионов будет за доли милисекунд выполняться. гонял такие запросы на табличке в гигабайт и 5мллн записей
а сколько айдишников поместится в запрос не мерял? -
7 февраля 2010 г. 0:16, спустя 1 час 57 минут 2 секунды
Faster, зависит от настроек сервера, хоть миллиард.Сапожник без сапог -
7 февраля 2010 г. 1:10, спустя 53 минуты 32 секунды
по дефолту 1 метр
http://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html#sysvar_max_allowed_packet
думаю лучше избегать слишком больших конструкций -
7 февраля 2010 г. 1:20, спустя 9 минут 35 секунд
вопрос - нахуй тебе в вебе выборка для (усредним до 7 байт id = 1 000 000 / 7) ~ 140 000 записей ??? ебанулись чтоли?)
по дефолту 1 метр
http://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html#sysvar_max_allowed_packet
думаю лучше избегать слишком больших конструкций
такие выборки ты все равно не искусственно "введешь", а из селекта какого нить 100%. или ты попросишь пользователя отметить 140к чекбоксов? :D:D:DСапожник без сапог -
7 февраля 2010 г. 1:24, спустя 4 минуты 23 секунды
или ты попросишь пользователя отметить 140к чекбоксов? :D:D:D
сделал мой вечер
Страницы: ← Предыдущая страница →
Пожалуйста, авторизуйтесь, чтобы написать комментарий!