Помогите оптимизировать запрос

12
J
На сайте с 08.06.2006
Offline
844
646
select * from keywords_tmp where keyword in (select keyword from keywords_tmp where url='https://site.com/page.html')

300 000 записей в таблице

индексы есть, но погоды не делают

оно как то через join наверное нужно, но я не силен

Lazy Badger
На сайте с 14.06.2017
Offline
228
#1

Это безобразие надо не "оптимизировать", а выкинуть и написать заново.

Я прочитал запрос и имею только один вопрос "Нахрена такие извращения?" Почему извращения? Смотрим внимательно

Внутренний запрос

select keyword from keywords_tmp where url='https://site.com/page.html'

получить все значения одного поля, если значение другого поля - X

Внешний запрос

select * from keywords_tmp where Y

Все поля из той же таблицы, с неким условием выборки, но эта выборка у нас 1:1 соответствует строкам внутреннего запроса и второй, соответственно, просто лишний

Я не знаю, насколько хорошо сейчас учат логике, но тут банальнейший 

select * from keywords_tmp where url='https://site.com/page.html'

Ну или, учитывая что в таблице 2 поля и по второму идет фильтрация и там известные и одинаковые данные

select keyword from keywords_tmp where url='https://site.com/page.html'
Производство жести методом непрерывного отжига
L
На сайте с 10.02.2015
Offline
260
#2
SELECT                                     
        *                                      
FROM                                      
        keywords_tmp K                      
JOIN                                      
(                                          
        SELECT                                
                K.keyword                
        FROM                                  
                keywords_tmp K                    
        WHERE                                  
                K.url = 'https://site.com/page.html'              
) KI                                      
ON K.keyword = KI.keyword
J
На сайте с 08.06.2006
Offline
844
#3

то что нужно

менее секунды любой запрос

сапсибо

помогите еще с

delete from keywords_tmp where keyword in (select keyword from grupa)

я пробовал, но что-то никак не выходит

возможно из-за

delete 
W1
На сайте с 22.01.2021
Offline
306
#4
joost #:
то что нужно

Вообще ничего не понял:
1. Как вы друг друга понимаете.
2. Что там вообще можно джойнить.
3. Что даёт такой запрос.

Мой форум - https://webinfo.guru –Там я всегда на связи
L
На сайте с 10.02.2015
Offline
260
#5
DELETE
        K
FROM
        keywords_tmp K
JOIN
(
        SELECT
                keyword
        FROM
                grupa G
) GI
ON K.keyword = GI.keyword;
J
На сайте с 08.06.2006
Offline
844
#6
livetv #:
DELETE
        K
FROM
        keywords_tmp K
JOIN
(
        SELECT
                keyword
        FROM
                grupa G
) GI
ON K.keyword = GI.keyword
спасибо
J
На сайте с 08.06.2006
Offline
844
#7
SELECT url, count(url) as cn FROM `keywords_tmp` where url not in (select url from url_proces) group by url order by cn desc limit 1

Помогите еще с этим. Если это возможно упростить.

D
На сайте с 28.06.2008
Offline
1114
#8
joost #:

Помогите еще с этим. Если это возможно упростить.

А цель какая? Запрос долго выполняется или что? Может этот запрос выполняется за 0,000001 сек, так смысл с ним возиться?

Где эксплейн?

J
На сайте с 08.06.2006
Offline
844
#9
Dram #:
А цель какая? Запрос долго выполняется или что? Может этот запрос выполняется за 0,000001 сек, так смысл с ним возиться?

ускорить

сейчас 3 сек.+

L
На сайте с 10.02.2015
Offline
260
#10
SELECT
        K.url, COUNT(*) AS cn
FROM
        keywords_tmp K
LEFT JOIN
(
        SELECT
                U.url
        FROM    
                url_proces U
) UI
ON K.url = UI.url      
WHERE
        ISNULL(UI.id)
GROUP BY
        K.url
ORDER BY
        cn DESC
LIMIT 1

А лучше так:

SELECT
        K.url, COUNT(*) AS cn
FROM
        keywords_tmp K
LEFT JOIN
        url_proces U
        ON K.url = U.url      
WHERE
        ISNULL(U.id)
GROUP BY
        K.url
ORDER BY
        cn DESC
LIMIT 1

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий