powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите ускорить время выполнения запроса
11 сообщений из 11, страница 1 из 1
Помогите ускорить время выполнения запроса
    #39446628
34gosha61
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день, уважаемые. Помогите нам ускорить выполнение запроса.

Есть table1 в которой хранится список фильмов (около 500 записей), есть table2 в которой находится информация, когда тот или иной зарегистрированный пользователь посмотрел определённый фильм (около 500к записей). Задача такова: нужно сделать выборку непросмотренных фильмом для определённого пользователя (Например его id=777). Мной был написан вот такой запрос:
Код: sql
1.
2.
3.
4.
5.
SELECT a.* FROM table1 a 
WHERE NOT EXISTS ( 
    SELECT NULL FROM table2 b 
    WHERE  b.idFilm = a.id AND b.idUser = 777
    )


Но дело в том, что он очень долго выполняется, в среднем 0,7 сек., подскажите, есть ли вариант улучшить данный запрос или может посоветуете другое реализацию поставленной задачи?
...
Рейтинг: 0 / 0
Помогите ускорить время выполнения запроса
    #39446632
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
34gosha61,

Показывайте план запроса.
...
Рейтинг: 0 / 0
Помогите ускорить время выполнения запроса
    #39446649
34gosha61
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft, я прошу прощения, но я не совсем понял, что вы имеете ввиду под "планом". Можете объяснить, что вам именно нужно, с радостью предоставлю.
...
Рейтинг: 0 / 0
Помогите ускорить время выполнения запроса
    #39446654
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
34gosha61,

Самое простое - добавьте слово EXPLAIN перед запросом и выполните его. А результат покажите тут.
...
Рейтинг: 0 / 0
Помогите ускорить время выполнения запроса
    #39446705
34gosha61
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft, сделал, вот что получилось:
...
Рейтинг: 0 / 0
Помогите ускорить время выполнения запроса
    #39446721
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
34gosha61,

У вас же индексов нет.
Создайте индекс (idUser,idFilm) на таблице table2.
...
Рейтинг: 0 / 0
Помогите ускорить время выполнения запроса
    #39446731
34gosha61
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft, спасибо, очень помогло.
...
Рейтинг: 0 / 0
Помогите ускорить время выполнения запроса
    #39446740
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
34gosha61,

Какое теперь время выполнения запроса и план?
Надеюсь, вы создали один индекс из двух полей, а не два по одному?
...
Рейтинг: 0 / 0
Помогите ускорить время выполнения запроса
    #39446772
34gosha61
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft, 0.0024, один индекс из двух полей
...
Рейтинг: 0 / 0
Помогите ускорить время выполнения запроса
    #39446773
34gosha61
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft, а нет, оказывается сделал два индекса, сейчас сделал из двух и запрос 0.0004 сек
...
Рейтинг: 0 / 0
Помогите ускорить время выполнения запроса
    #39446850
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
34gosha61Добрый день, уважаемые. Помогите нам ускорить выполнение запроса.

Есть table1 в которой хранится список фильмов (около 500 записей), есть table2 в которой находится информация, когда тот или иной зарегистрированный пользователь посмотрел определённый фильм (около 500к записей). Задача такова: нужно сделать выборку непросмотренных фильмом для определённого пользователя (Например его id=777). Мной был написан вот такой запрос:
Код: sql
1.
2.
3.
4.
5.
SELECT a.* FROM table1 a 
WHERE NOT EXISTS ( 
    SELECT NULL FROM table2 b 
    WHERE  b.idFilm = a.id AND b.idUser = 777
    )


Но дело в том, что он очень долго выполняется, в среднем 0,7 сек., подскажите, есть ли вариант улучшить данный запрос или может посоветуете другое реализацию поставленной задачи?

0.7 - это не долго. Это нормально. Долго с это минуты, часы.

в таблице table2 нужен индекс по полям
(idFilm,idUser)

если он уже есть, то больше ничего не сделать.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите ускорить время выполнения запроса
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]