Оптимизировать mysql запрос

123 4
BasePelleta
На сайте с 29.05.2008
Offline
120
#11

AlexVenga,

у меня таких файлов 85к и обновляютя раз в сутки, но не по крону а по дате обновления файла чтобы не все сразу - работает прекрасно

А текстовый файл инклудишь и выводишь на странице?

BasePelleta добавил 24.08.2011 в 16:03

Joker-jar:
Один блок = один файл. А на скольких страницах этот блок не важно. Либо я вас не до конца понял.

Если, к примеру 10 страниц, то для каждой генерятся рандомно свои 4 новости.

Joker-jar
На сайте с 26.08.2010
Offline
171
#12

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

AlexVenga
На сайте с 10.04.2007
Offline
190
#13

создаю файл с серилизованной выборкой нужных полей БД (все поля короткие)

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

Тока из файла надо читать не долгим и тяжелым fopen fread fclose - это дольше чем МуСКУЛ, а прочто filegetcontent/

Если места на диске до жопы то можно в файл html пихать и после проверки что файл нормальный сразу passthru делать и он вообще моментом на экран выскочит...

AlexVenga добавил 24.08.2011 в 16:25

просто в самом HTML его нельзя инклудить, надо сначала проверять на дату последнего изменения...

Антикризисное предложение: [Бурж, AdSense] [NEW] Сайты - каталоги компаний с гарантией трафа [Дорого] (/ru/forum/1006462)
BasePelleta
На сайте с 29.05.2008
Offline
120
#14
создаю файл с серилизованной выборкой нужных полей БД (все поля короткие)
При обращении к странице проверяю сколько файл прожил и не пора ли его заменить, затем либо расерилизовываю в данные и вывожу, либо генерю новые, пишу в файл и вывожу.

Тока из файла надо читать не долгим и тяжелым fopen fread fclose - это дольше чем МуСКУЛ, а прочто filegetcontent/

Если места на диске до жопы то можно после проверки что файл нормальный сразу path_thru делать и он вообще моментом на экран выскочит...

Подход интересный, но если новостей, к примеру 1000, то создается столько же файлов....

, а если есть кэширование, то необходимость в файлах посредственна.

В первом посте при нерандомном запросе, блок для релевантных статей уходил в кэш и жил там до обновления.

При добавлении рандома в sql-запрос, при каждом обновлении в браузере новости, стал рандомно меняться список релевантных статей, для каждой новости свой.

AlexVenga
На сайте с 10.04.2007
Offline
190
#15

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

Рандом для МуСКУЛ это сразу слоу квери....

BasePelleta
На сайте с 29.05.2008
Offline
120
#16
Рандом для МуСКУЛ это сразу слоу квери....

Не знал, что так критично ...

Joker-jar
На сайте с 26.08.2010
Offline
171
#17

Альтернатива кешу: чтобы решить вот это

но при рандомной выборке (rand() AS rnd)
при выводе статьи блок релевантных статей постонянно меняется.

1. Хотелось бы сделать так, чтобы при обновлении страницы новый рандомный
запрос выполнялся через некоторый интервал.

можно отобранные случайные id хранить в какой-нибудь служебной таблице какое-то время

N
На сайте с 06.05.2007
Offline
419
#18
AlexVenga:
Рандом для МуСКУЛ это сразу слоу квери....

неправда. все зависит от объема данных.

BasePelleta:
де-то читал, что конструкция (rand() AS rnd) в запросе к мускулу не производительна
и может быть причиной slow queries.

А ты не читай. Дождись их появления для начала, а потом уже беспокойся.

В конце концов, писать плохие запросы быстро - это выгодно. Многие сайты закрываются еще до того как их начнет беспокоить производительность mysql.

Кнопка вызова админа ()
AlexVenga
На сайте с 10.04.2007
Offline
190
#19
BasePelleta:
Не знал, что так критично ...

Ну вот что чаще всего делает мускул? выбирает данные из отсортированного набора данных.

Методов поиска я вам назову штук 5, а то и 10 с различной скоростью (от простого перебора, до деления пополам и деления на случайные отрезки).

А что такое отсортировать рандомно?

Я не спец в мускуле (внутренней его части), но алгорит генерации примерно такой:

1) берем псевдослучайное число

2) Берем второе псч, если оно не равно первому идем дальше, если равно берем другое пока не найдем отличное

3) Берем псч и ПРЯМЫМ ПЕРЕБОРОМ проверяем предыдущие, пока число не будет уникальным в рамках новой выборки.

n)...

уверен что оптимизатор запросов это както по другому делает, но всеравно это очень долго...

Оффтоп, господа крутые прогеры, а есть вариант получить набор данных в один двумерный массив сразу, а не перебирать циклом каждую запись из указателя? просто оч давно интересует... по типу SimpleXml_Load ???.

AlexVenga добавил 24.08.2011 в 17:43

netwind:

В конце концов, писать плохие запросы быстро - это выгодно. Многие сайты закрываются еще до того как их начнет беспокоить производительность mysql.

Согласен на все 100%!!!

по этому раз в пол года переписываю некоторые сайты с 0....

Это как

- что такое програмирование?

- Ну вот представь, берем деревянный сортир, и начинаем к нему на крышу пристраивать Empire State Building

Так что ТС, прекращайте плодить прогерские топики и делайте "чтоб работало", когда будет тормозить нещадно от наплыва народа - уже и денег будет достаточно на нормального архитектора-програмисто, способного все предусмотреть и заложить зарание.

Joker-jar
На сайте с 26.08.2010
Offline
171
#20
а есть вариант получить набор данных в один двумерный массив сразу

Реализовать протокол MySQL и через сокет данные получать :) Шутка...

123 4

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий