вопрос
Приветствую, проверил время отклика сайта, и выявились несколько медленных запросов, но как их ускорить, оптимизировать просто понятия не имею, вот пример медленных запросов с временем выполнения:
0,10511804 сек. - [ SELECT p.id, p.autor, p.date, p.short_story, CHAR_LENGTH(p.full_story) as full_story, p.full_story as full_story2, p.xfields, p.title, p.category, p.alt_name, p.comm_num, p.allow_comm, p.fixed, p.tags, e.news_read, e.day_read, e.allow_rate, e.rating, e.vote_num, e.votes, e.view_edit, e.editdate, e.editor, e.reason FROM dle_post p LEFT JOIN dle_post_extras e ON (p.id=e.news_id) WHERE category regexp '[[:<:]](1|2|3|4|5|6|7|8|9|10|11|12|13|14|21|22|23|708|709|710|711|712|713)[[:>:]]' AND approve=1 AND date < '2015-06-09 21:18:28' ORDER BY day_read DESC, news_read DESC LIMIT 0,6 ]
0,02097297 сек. - [ SELECT p.id, p.autor, p.date, p.short_story, CHAR_LENGTH(p.full_story) as full_story, p.full_story as full_story2, p.xfields, p.title, p.category, p.alt_name, p.comm_num, p.allow_comm, p.fixed, p.tags, e.news_read, e.allow_rate, e.rating, e.vote_num, e.votes, e.view_edit, e.editdate, e.editor, e.reason FROM dle_post p LEFT JOIN dle_post_extras e ON (p.id=e.news_id) WHERE category regexp '[[:<:]](30|31)[[:>:]]' AND approve=1 AND date < '2015-06-09 21:18:28' ORDER BY date DESC LIMIT 0,5 ]
0,02827621 сек. - [ SELECT p.id, p.autor, p.date, p.short_story, CHAR_LENGTH(p.full_story) as full_story, p.full_story as full_story2, p.xfields, p.title, p.category, p.alt_name, p.comm_num, p.allow_comm, p.fixed, p.tags, e.news_read, e.allow_rate, e.rating, e.vote_num, e.votes, e.view_edit, e.editdate, e.editor, e.reason FROM dle_post p LEFT JOIN dle_post_extras e ON (p.id=e.news_id) WHERE category regexp '[[:<:]](1|2|3|4|5|6|7|8|9|10|11|12|13|14|21|22|23|708|709|710|711|712|713)[[:>:]]' AND p.date >= '2015-06-09 21:18:28' - INTERVAL 7 DAY AND p.date < '2015-06-09 21:18:28' AND approve=1 ORDER BY news_read DESC LIMIT 0,7 ]
Кешируйте... иначе никак... если я понял у вас категорий на китайскую стену хватит... если я правильно вижу то у вас категории от 1 до 713
и если мне память не отшибло то условие изначально кривое
в WHERE условия выполняются по порядку как записаны
правильнее будет так
1) выбрать по дате (быстро обрабатывает) date < '2015-06-09 21:18:28'
2) отсеять по статусу (быстро обрабатывает) approve = 1
3) выбрать категории (регулярка по дольше) category regexp '[[:<:]](30|31)[[:>:]]'
и если мне память не отшибло то условие изначально кривое
в WHERE условия выполняются по порядку как записаны
правильнее будет так
1) выбрать по дате (быстро обрабатывает) date < '2015-06-09 21:18:28'
2) отсеять по статусу (быстро обрабатывает) approve = 1
3) выбрать категории (регулярка по дольше) category regexp '[[:<:]](30|31)[[:>:]]'