Форум программистов, компьютерный форум, киберфорум
MySQL
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 29.01.2018
Сообщений: 10
1

Оптимизация запроса

09.04.2018, 08:36. Показов 889. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день, есть вот такой запрос:
select id, content, vote from table1 where DATE_FORMAT(date, '%Y-%m') = ?
order by vote desc limit ?, 20

За месяц получается набирается около 600 записей, date проиндексировано. Запрос занимает 0.5 . Можно ли сделать быстрее?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.04.2018, 08:36
Ответы с готовыми решениями:

Оптимизация запроса
Здравствуйте, проблема в следующем, время генерации страницы без запроса ниже: 0,00702, с ним около...

Оптимизация запроса
Здравствуйте! Столкнулся с такой проблемой, мне нужно выполнить запрос вида: SELECT `id` FROM...

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

Оптимизация запроса
Здравствуйте. Ломаю голову об оптимизации запроса. Есть две таблицы CREATE TABLE `test` (...

2
476 / 239 / 114
Регистрация: 12.05.2016
Сообщений: 647
12.04.2018, 00:30 2
Лучший ответ Сообщение было отмечено Recontrans как решение

Решение

Вариант №1: Сделать индекс на date. Равенство заменить на BETWEEN между началом и концом месяца. Будет range scan по индексу.

Вариант №2: Сделать отдельное поле с месяцем (можно даже числовое типа 201801) по нему индекс и равенство (однако данное решение менее гибкое, если данные не обязательно за месяц выбираются.

Вариант №3: Начиная с версии 5.7.6 можно вариант 2 автоматизировать, добавив автогенерируемое поле равное DATE_FORMAT(date, '%Y-%m') и индекс по нему.

Я бы реализовал первый вариант, как самый гибкий, позволяющий налагать условия на произвольный диапазон дат

P.S: В более продвинутых базах, к коим MySQL не относится - есть еще одно элегантное решение в виде функциональных индексов.
1
0 / 0 / 0
Регистрация: 29.01.2018
Сообщений: 10
12.04.2018, 10:06  [ТС] 3
Спасибо за подробный ответ,я думал у меня запрос с индексацией а оказалось нет, всё из-за date_format
0
12.04.2018, 10:06
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.04.2018, 10:06
Помогаю со студенческими работами здесь

Оптимизация запроса
Добрый день. Подскажите как по человечески построить запрос: нужно получать данные по сотрудникам...

оптимизация запроса
Помогите оптимизировать такой запрос.. Выполняется около секунды..использую сортировку по 2...

Оптимизация запроса
Идет поиск по полю date_added(TIMESTAMP) ... WHERE DATE(date_added) = '2017-09-02' Как и...

Оптимизация запроса
Здравствуйте!! Есть таблица с полем rfid. в Нем через запятую хранятся записи (не более...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru