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

  1. Идет поиск по полю date_added(TIMESTAMP)


textual

Код к задаче: «Оптимизация запроса - MySQL»

SELECT * FROM `table` WHERE `date_added` >= DATE_FORMAT('2017-09-02', '%Y-%m-%d %H:%i:%s')  - INTERVAL 1 DAY

СДЕЛАЙТЕ РЕПОСТ

7   голосов, оценка 4.143 из 5



Похожие ответы
  1. Прошу помощи в отпимизации запроса по расчёту процента от определённого кол-во, сам по себе запрос получается нестрашный, но когда на него накладываются условия, получается все печально... Изначально запрос у меня выгрядит так: select count(t.id)*100/(select count(t.id) from t where t.type in (0,1,2)) from t where t.type = 0 Но когда начинают применятся фильтры к этому запросу и джоинится по 5-6 таблиц, получается что они сначала джойнятся в (select count(t.id) from t where t.type in (0,1,2), а потом в основной запрос, ну например, если я хочу ограничивать данные по времени, пользователю и тд... и запрос получается невероятно длинющим и в плане текста, и в плане отработки по времени. возможно есть какаято мат.функция, или же как то можно один раз определить from t, а там где я делаю всякие каунты уже указывать, каунт чего на что я делю, может через case

  1. Всем привет! Раздумываю над структурой таблицы в которой хранится описание магазинов(адреса, настройки, режим работы...). Возник вопрос как хранить режим работы магазинов, в голову пришло два варианта: 1. Создаю в этой-же таблице еще 16 полей(пон. начало дня, пон. конец дня, втор. н. д., втор. к. д. ...... праздники н. д. праздники к. д.) и туда записываю значения в формате time. 2. Создаю отдельную таблицу, в которой будут 17 полей (id, и вышеописанные 16 полей), При добавлении нового магазина проверяю режим работ с уже существующими в таблице (так как большинство работают по однотипному графику, то шаблонов режимов будет не так много), если шаблон уже есть, то вытаскиваю id этого шаблона и записываю его в основную таблицу с магазинами. Если шаблона нет, то записываю новый шаблон в таблицу, а id записываю в основную таблицу. Плюсы и минусы этих вариантов: При первом исполнении получаем дублирования одинаковых значений(так как в основном режимы работ схожи) но зато удобнее выбирать те магазины которые работают в данный момент (выборка происходит в одном запросе). При втором исполнении, экономим места в БД зато при выводе работающих магазинов создаем два запроса: одним запросом выбираем id шаблонов которые в настоящий момент работают, а уже вторым запросом выбираем магазины у которых эти id присутствуют в поле "режим работы". Плюс ко всему добавляется цикл при вытаскивании id шаблонов, а условия для поиска магазинов может быть с несколько десятков "ОR". Так на каком варианте лучше остановиться, и почему?

  1. Вообщем помогите пожалуйста составить запрос Есть таблица Свободные ячейки это где стоит 0 Как эффективно сделать запрос UPDATE Например для id = 1 Там в строке 3 свободных ячейки как записать число 777 в любую из свободных ячеек ?

  1. На собеседовании дали такую задачку. Помогите решить: есть БД, в ней таблицы Клиенты со столбцами id, название клиента, тип клиента (оптовый, розничный); таблица Накладные со столбцами id, id_клиента, месяц, сумма. В ответе на запрос должна содержаться таблица из двух столбцов: название фирмы-клиента (столбик Клиент) и Тип. В первом столбце - названия фирм, которым выставлены накладные в сентябре, для таких клиентов в столбике Тип должна стоять буква S, напротив тех, у кого сумма оплаты по накладным в сентябре вынесла больше 4900 должна в столбике Тип стоять буква V. Как это сделать - ума не приложу и даже не знаю, нормально ли я спросила и как сформулировать эту проблему кратко. И еще один запрос, выдающий сумму сентябрьских накладных, учитывая оптовые и розничные продажи.

  1. Есть 2 таблицы: А: id, id_1, value_1, id_2, value_2, id_3, value_3 1, 1, 10, 2, 20, 3, 30 B: id, name 1 Name1 2 Name2 3 Name3 Как можно получить результат вида: name_1, value_1, name_2, value_2, name_3, value_3 Name1, 10, Name2, 20, Name3, 30 Заранее спасибо!

  1. Использую вот такой запрос чтобы узнать 'id' все повторяющихся значений в столбце 'ru' SELECT `id` , `ru` FROM `table` WHERE `ru` IN (SELECT `ru` FROM `table` GROUP BY `ru` HAVING count(*)>1); При количестве записей 1000 штук, запрос занимает 16 сек, но записей будет намного больше. Подскажите есть ли более быстрый способ получить id все повторяющизся значений средствами MySql? Например ------------------ ¦ id ¦ ru ¦ ------------------ ¦ 1 ¦ Вася ¦ ------------------ ¦ 2 ¦ Вася ¦ ------------------ ¦ 3 ¦ Миша ¦ ------------------ ¦ 4 ¦ Олег ¦ ------------------ ¦ 5 ¦ Олег ¦ ------------------ Нужно получить 1 Вася 2 Вася 4 Олег 5 Олег

  1. Помогите написать запрос через промежуточную таблицу от provider через supply -> product_code

  1. Две таблицы: STUDENTS (STUDENT_ID, GROUP_ID, FIRST_NAME, LAST_NAME) и GROUPS (GROUP_ID, NAME). Задача: удалить всех студентов из группы с именем SR-01My