Boroda aka Hamster (fantaseour) wrote,
Boroda aka Hamster
fantaseour

Винегрет -- пагинация, youtube, фильм The Insider (Свой человек)

Вот ведь какая штука, казалось бы простая фенечка -- добавить разбивку по страницам к выводу результатов запроса. Но до Mysql 5-й версии, где появился SQL_CALC_FOUND_ROWS, для того, чтобы узнать полное количество записей, в добавок к запросу с LIMIT, нужен был еще один -- запрос-счетчик, возвращающий число всех записей. А лишний запрос, это штука, которую веб-программисты не любят и избегают. Хотел прославить MySQL, дав ссылку на этот замечательный флаг в документации, но сайт mysql.com молчит как партизан уже 3-й день, поэтому процитирую:

SQL_CALC_FOUND_ROWS tells MySQL to calculate how many rows there would be in the result set, disregarding any LIMIT clause. The number of rows can then be retrieved with
SELECT FOUND_ROWS()


Однако, кроме этой понятной заморочки, некоторые программеры любят допустить весьма популярную ошибку -- посчитать число страниц, как результат целочисленного деления числа записей, на число записей на страницу плюс один (floor(rows/pagesize)+1).

При этом забывают, что в том случае, когда эти параметры делятся без остатка, добавлять единицу не надо (если у нас 10 записей на страницу, и всего записей 20, то страниц все же 2, а не 3). Правильный результат будет и просто при округлении вверх.

Вы думаете, я сейчас про Васю Пупкина? Нет, я про Йутуб


Приведенный по ссылке клип из фильма The Insider (Свой Человек) про судебный процесс против табачных компаний. Рассказывает о свободе слова. Журналист Lowell Bergman (его играет Аль Пачино), нашел Джеффри Вайганда (его играет Рассел Кроу), уволенного вице-президента компании Браун и Вильямсон, и убедил дать его показания в суде и в передаче 60 минут о добавляемых в табак веществах. Против Вайганда разразилась настоящая травля. У богатых табачных компаний длинные руки. И руководство CBS решило убить этот сюжет. В этом ролике Пачино говорит такую речь (на 2:45):

LOWELL
... You pay me to go get guys like
Wigand, to draw him out. To get him to
trust us, to get him to go on television.
I do. I deliver him. He sits. He
talks. He violates his own fucking
confidentiality agreement. And he's only
the key witness in the biggest public
health reform issue, maybe the biggest,
most-expensive corporate-malfeasance case
in U.S. history. And Jeffrey Wigand,
who's out on a limb, does he go on
television and tell the truth? Yes.
Is it newsworthy? Yes. Are we gonna air
it? Of course not. Why? Because he's
not telling the truth? No. Because he
is telling the truth. That's why we're
not going to air it. And the more truth
he tells, the worse it gets!

Сценарий


UPD
Кстати, умные парни, говорят, что если индексы правильные, то два запроса быстрее, чем один с этой опцией:

http://www.mysqlperformanceblog.com/2007/08/28/to-sql_calc_found_rows-or-not-to-sql_calc_found_rows/
Tags: cinema, development, internet
Subscribe

  • (no subject)

    Я очень люблю конференции. Они зажигают в разработчике свечечку, которую он потом бережно несет в себе через весь год! Когда-то давно, я с завистью…

  • wordpress: php -> nodejs

    Хипстеры захватывают мир :) Не очень понятно, как этот переход отразится, на людях, которые ставят этот вордпресс на любой копеечный хостинг с…

  • ultimate php

    For those who asked how to get started testing PHP7. I have packaged up my dev environment in a Vagrant box: https://t.co/EOhyi17fPI— Rasmus…

  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 4 comments