тестовое задание

Dez

Новичок
дибилизм где так есть, у новостей, постов и прочих подобных вещей есть время создания и время публикации и владелец сайта должен иметь возможность создавать черновики новостей и прочие вещи, так что 150 новость может быть новее 100
И вопрос видимо вообще не на оптимизацию запроса, а на понимание того что подобное можно закешировать, а при создании новости - убить кеш
все верно, в реалиях так и есть. Но это не реалии, а тестовое задание. И сортировка по id - это часть задания.
 

shark_255

Новичок
в общем случае id-шки не обязаны следовать одна за одной непрерывно. Новость создали, новость удалили и в auto_increment уже пропуск. И ваша математика в пролете, т.к. не выведет 3 последние новости.
в таком случае да, но случаев бывает много и все зависит от контекста

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

hell0w0rd

Продвинутый новичок
MiksIr
я бы сказал сначала что это идиотизм, опираться на id, а уже затем предложил бы кеширование
 

MiksIr

miksir@home:~$
покажите, где в теории написано что ordre by работает быстрее select max(id)
У вас не просто select max(id), у вас потом еще нужно сделать выборку этих записей, правда же? Т.е. как минимум два запроса, 4 обращения к индексу, 2 раза работает парсер и анализатор, т.е. накладные. Сортировка тоже идет по индексу, если вы не вкурсе и останавливается ровно в тот момент, когда лимит достигнут.
Так что как минимум - одного порядка производительности запросы. Т.е. вы ничего не выигрываете своим решением.
 

shark_255

Новичок
У вас не просто select max(id), у вас потом еще нужно сделать выборку этих записей, правда же? Т.е. как минимум два запроса, 4 обращения к индексу, 2 раза работает парсер и анализатор, т.е. накладные. Сортировка тоже идет по индексу, если вы не вкурсе и останавливается ровно в тот момент, когда лимит достигнут.
Так что как минимум - одного порядка производительности запросы. Т.е. вы ничего не выигрываете своим решением.
на этом моменте соглашусь)
 

Dez

Новичок
MiksIr
я бы сказал сначала что это идиотизм, опираться на id, а уже затем предложил бы кеширование
Не понятно с чего вы это взяли. Более новые посты идут с большим id - это факт.
Новость бывает - опубликованной или нет. Столбец status. По которому фильтруется выборка по where. А order by id также остается.
И не нужен дополнительный индекс на столбец "время создания/редактирования"
 

Ragazzo

TDD interested
Redjik
Они открытые, и подразумевают разные варианты ответа, т.е. люди с разным уровнем по разному будут отвечать, что очень хорошо :)
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Я вот закончил свое тестовое задание делать https://docs.google.com/forms/d/1fgKTsUuhscDAidI2GOfmh_dDK440u_bwRjjBUEgS-IM/viewform =)
А вот вопрос "Есть ли у вас опыт написания тестов? Есть метод http://pastebin.com/H5nq1Nav. Напишите на него тест." --- это вопрос с под@#бкой, да? Ответ, содержащий тест, будет признан неправильным?
 

MiksIr

miksir@home:~$
А вот вопрос "Есть ли у вас опыт написания тестов? Есть метод http://pastebin.com/H5nq1Nav. Напишите на него тест." --- это вопрос с под@#бкой, да? Ответ, содержащий тест, будет признан неправильным?
Только если он напишет - почему он не написал тест ;) А в общем все же предполагается, что он не будет гнуть пальцы и напишет что-то типа testSelectBehaviour :)
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
А в общем все же предполагается, что он не будет гнуть пальцы и напишет что-то типа testSelectBehaviour :)
Ну тут тест написать можно только "подогнав под ответ", потому что
* у метода нет документации;
* понять по названию, как он должен работать, нереально.

А подгонять под ответ --- тоже некрасиво, т.к. в методе случайно / намеренно пропущен break в switch:
PHP:
     switch ($input) {
       case 1:
           $output = 10;
       case 2:
       case 3:
           $output = 20;
     }
 

MiksIr

miksir@home:~$
Да, за break спасибо ;) Наверно все же случайно пропущен.
Ну и да, подогнать под ответ - предполагалось. Опять же, то, как будет дан ответ - уже многое говорит о человеке. Все же результаты тестов идут не к HR, а ко мне. Т.е. если человек напишет - вот вам код, но на самом деле так в реальности не делается, ибо: ..., то только плюс.
Все же этот тест рассчитан немного на боле низкий уровень, чем ваш. Там чаще люди или не писали тесты вообще или вот так вот подгоняли под ответ, что уже хорошо. Т.е. задача вопроса понять - знают ли люди вообще хоть что-то про тестирование.
 
Сверху