X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость ( Вход | Регистрация )

Открыть тему
Тема закрыта
> Using filesort
MeTaTRoN
MeTaTRoN
Topic Starter сообщение 17.3.2013, 19:08; Ответить: MeTaTRoN
Сообщение #1


Завсегдатай
*****

Группа: Active User
Сообщений: 511
Регистрация: 1.9.2008
Из: Таллинн Эстония
Поблагодарили: 63 раза
Репутация:   18  


SELECT SQL_CALC_FOUND_ROWS id, autor, date,kolvideo,rating, short_story, title,rating, category, alt_name, comm_num, news_read, flag FROM dle_post WHERE approve AND allow_main ORDER BY fixed desc, date desc LIMIT 0,15


Есть вот такой вот запрос. Он Использует файловую сортировку (explain запроса делал)
В таблице примерно 45 тысяч строк.

Если бы не 2 значения в order by, Можно было бы убрать файловую сортировку через FORCE INDEX(date), но так как 2 ключа это не помогает.

Может кто знает, как в подобном примере можно убрать файловую сортировку.

Если нужна дополнительная информация, скажите какая.

Заранее всем спасибо.


--------------------
Программист: PHP, JavaScript, HTML5, HTML5 canvas, CSS, AJAX, jquery, SQL.
Реклама на аниме сайте
Услуги программиста, тема на форуме
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
webpavilion
webpavilion
сообщение 17.3.2013, 21:33; Ответить: webpavilion
Сообщение #2


сеошник на пенсии
*******

Группа: Active User
Сообщений: 2726
Регистрация: 28.4.2009
Из: МО
Поблагодарили: 1659 раз
Репутация:   171  


дайте полный DDL по идеи не должно так быть.

сам нашел, посмотрел, печально на DLE живется. Никак не вылечить без денормализации, буфер сортировки (sort_buffer) увеличте до максимально возможного это снимет симптомы на время.

покажите: SELECT COUNT(*), fixed FROM dle_post GROUP BY fixed


--------------------
Не ведитесь, cамопис это почти всегда плохо!

Делаю сайты на Drupal 7.x
(очень дорого)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
MeTaTRoN
MeTaTRoN
Topic Starter сообщение 19.3.2013, 12:17; Ответить: MeTaTRoN
Сообщение #3


Завсегдатай
*****

Группа: Active User
Сообщений: 511
Регистрация: 1.9.2008
Из: Таллинн Эстония
Поблагодарили: 63 раза
Репутация:   18  


(webpavilion @ 17.3.2013, 20:33) *
покажите: SELECT COUNT(*), fixed FROM dle_post GROUP BY fixed

http://floomby.ru/s1/5at3C4


--------------------
Программист: PHP, JavaScript, HTML5, HTML5 canvas, CSS, AJAX, jquery, SQL.
Реклама на аниме сайте
Услуги программиста, тема на форуме
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
webpavilion
webpavilion
сообщение 19.3.2013, 12:52; Ответить: webpavilion
Сообщение #4


сеошник на пенсии
*******

Группа: Active User
Сообщений: 2726
Регистрация: 28.4.2009
Из: МО
Поблагодарили: 1659 раз
Репутация:   171  


MeTaTRoN, мне не explain нужен а результат выполнения.

Скорее всего fixed содержит только 0 и 1, если так то можно добавить в бд еще один колонку с без знаковым int и повесить на нее тригер который будет переводить date в unixtime и прибавлять к этому значению fixed*10^10, индекс по ней будет корректно отрабатывать и все будет работать быстро.


--------------------
Не ведитесь, cамопис это почти всегда плохо!

Делаю сайты на Drupal 7.x
(очень дорого)


Поблагодарили: (1)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
MeTaTRoN
MeTaTRoN
Topic Starter сообщение 19.3.2013, 17:53; Ответить: MeTaTRoN
Сообщение #5


Завсегдатай
*****

Группа: Active User
Сообщений: 511
Регистрация: 1.9.2008
Из: Таллинн Эстония
Поблагодарили: 63 раза
Репутация:   18  


(webpavilion @ 19.3.2013, 11:52) *
Скорее всего fixed содержит только 0 и 1,

Да, всё верно, fixed содержит только 0 и 1.

А вот на счёт триггера, я ими ещё не пользовался, где об этом можно почитать?

http://floomby.ru/s1/AatZbr

результат выполнения

(webpavilion @ 17.3.2013, 20:33) *
sort_buffer

sort_buffer_size стоит 16 мегов.


--------------------
Программист: PHP, JavaScript, HTML5, HTML5 canvas, CSS, AJAX, jquery, SQL.
Реклама на аниме сайте
Услуги программиста, тема на форуме
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
webpavilion
webpavilion
сообщение 19.3.2013, 18:21; Ответить: webpavilion
Сообщение #6


сеошник на пенсии
*******

Группа: Active User
Сообщений: 2726
Регистрация: 28.4.2009
Из: МО
Поблагодарили: 1659 раз
Репутация:   171  


если тригерами неумело пользоваться можно сделать еще хуже. почитать можно в гугле.
у вас только одна запись фиксед просто уберите это поле из запроса и все. а запись можно выводить в шаблоне или каким нибудь другим костылем.'


--------------------
Не ведитесь, cамопис это почти всегда плохо!

Делаю сайты на Drupal 7.x
(очень дорого)


Поблагодарили: (1)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
MeTaTRoN
MeTaTRoN
Topic Starter сообщение 19.3.2013, 18:31; Ответить: MeTaTRoN
Сообщение #7


Завсегдатай
*****

Группа: Active User
Сообщений: 511
Регистрация: 1.9.2008
Из: Таллинн Эстония
Поблагодарили: 63 раза
Репутация:   18  


И всё таки, почему он не может сортировку выполнить в оперативке?


--------------------
Программист: PHP, JavaScript, HTML5, HTML5 canvas, CSS, AJAX, jquery, SQL.
Реклама на аниме сайте
Услуги программиста, тема на форуме
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
webpavilion
webpavilion
сообщение 19.3.2013, 21:22; Ответить: webpavilion
Сообщение #8


сеошник на пенсии
*******

Группа: Active User
Сообщений: 2726
Регистрация: 28.4.2009
Из: МО
Поблагодарили: 1659 раз
Репутация:   171  


filesort использует временный файлы только если блоки не помещаются в sort_buffer в вашем случаи (мене Мб) все влазит, но работает медленно из-за quicksort вместо использования составного индекса, почему так надо разбираться. без доступа к БД это как гадание на кофейной гуше.


--------------------
Не ведитесь, cамопис это почти всегда плохо!

Делаю сайты на Drupal 7.x
(очень дорого)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


 



RSS Текстовая версия Сейчас: 14.12.2017, 4:56
Дизайн