Обновить
19
0
Odobenus Rosmarus @OdobenusRosmarus

Пользователь

Отправить сообщение
А что Вас тут удивляет? Все 77 книг Библии делятся на канонические (т. е. продиктованные богом) и неканонические (все остальные). Евангиелие, как жизнеописание, написанное учениками — неканоническая книга по определению.
И что Вам забавно? то что я признал свою неправоту? Тут так не принято?
Ну чтож… попытался упростить ответ, получилось плохо… Если Вам так нужно, могу привести решение без упрощения.

Итак.
У нас есть таблица, скажем prices,
create table goods (ix int auto_increment primary key, cost integer);
И есть составной индекс
create index ix1 (cost,ix)

У нас есть страница, в которой в hidden полях есть pkey и cost последней записи и этой страницы. Скажем они будут в переменных $ix и $cost когда пользователь тыркнет кнопку next.

При отрисовке страницы первая запись будет
handler goods open;
handler goods read ix1 = ($cost,$ix);

следующие N записей (длина страницы N+1)
handler goods read ix1 next limit $N;
handler goods close;
У последней записи естественно ix и cost сохраняем в hidden полях.

Интересно, а Вас то какое решение?

абсолютно точно. Уровень хабра медленно но неуклонно сползает.
Да, очевидно не будет работать. Как -то в жизни всегда хватало ключей с нормльной селективностью. А не было — создавал искусственные.
А какая разница, есть ключ по цене или нет? Если есть, то будет использоваться, нет — будет медленнее работать.

А насчет 3 страниц с ценой — если поле не уникально, используйте

where цена >= граничное_значение_цены and pkey >граничное_значение_pkey order by цена, pkey

Мне кажется это очевидно…

значит web страница должна хранить в скрытых полях значения и цены и названия для первой (на странице) и последней (на странице) записи…

Переключили сортировку, значит прсто от другого ключа танцуем…
для myisam — поскольку операции атомарны, диапазон будет в пределах
LAST_INSERT_ID()… LAST_INSERT_ID()+ROW_COUNT()

explain… А заодно slow query log. И еще show status. А так же show variables. И если Вы понимаете, что там написано, во всех этих местах, то скорее всего сможете найти быстрый способ выборки данных
(цитата)
— select * from table where id in (select id from table order by rand()) limit 1,
вот это выполнится перфектно при условии что ид = первичный ключ, поспорите? ;)
(/цитаты)

Поспорю.

order by rand приведет к тому, что оптимизатор даже не сообразит, какой индекс можно использовать. То есть он выберет filesort, temporary file для вычисления списка id-ов в случайном порядке в сабселекте…

далее сервер соберет резултсет из всех записей (поскольку все id есть в разультатах сабселекта) и затем первая строка из него (limit 1) будет возвращена пользователю.

Не слишком похоже на оптимальный план.

в innodb не берется.
Ну ясное дело что по первичному ключу лучше. Только
1) нет гарантии что вы выберите именно 19 значений, как Вы предолагаете
2) Нет гарантии, что в записи где $start = 1000 000, и первичный ключ тоже = 1 000 000

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

select что_надо from таблица where keyfield>сохраненныйпервичныйключ limit 20;

если запрос на insert/delete/update то query cache в любом случае по барабану. Так что выигрыш от prepared statements может быть заметным, начиная, если мне не изменяет склероз, с 4.1.

другое дело что некоторые клиенсткие бибки работают (как это будет по русски) коряво с prepared statements. Можно на засаду нарваться.
зависит от типа таблицы. Для myisam однозначно не будет.
А ты не золото покупай. Скажем, никель. Или хром. Компактно и ликвидность хорошая во все времена
2) Излучение CO2? Что то новое. Наверное ужасная вешь…
981. Значит в на начало перестройки Вам было примерно 5 лет. Это конечно достойный возраст, чтобы утверждать, что уж Вы то застали все эти ужасы…
1) Использование разных (изначально лживых) источников чтобы выуживать информацию — это не свобода слова. Это технология, как получить информацию _без_ свободы слова.

2) Ваша ошибка в том, что вы верите, что сможете получить правду, читая лживые, но разные источники. Полную информацию вы все равно не получите.

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

У этих групп свои СМИ. Если вы хотите что-то опубликовать, это должно отражать интересы хотя бы одной из этих групп… Если не отражает — то вы просто не найдете издание чтобы опубликовать свою статью. Потому что издания не будут публиковать статьи в которых не заинтересованы их хозяева.(Ну разве что организуете свою газету, опять же с проблематичным тиражем)

Таким образом публикуя статью, вы выражаете интересы не народа. Не свободы. А одной из этих групп.

Вы можете выбирать кому продаться, но свободой слова это не назвать.
В другой газете — другой хозяин. Свободы все равно нет. Можешь лишь выбирать кому продаться.
Всего должно быть в меру. Зачем ты вообще нужен, если собираешься заботиться только о себе?

Информация

В рейтинге
Не участвует
Откуда
Queensland, Австралия
Дата рождения
Зарегистрирован
Активность