Тайм-аут запроса MySQL при запросе объекта JSON - PullRequest
1 голос
/ 28 апреля 2019

Кажется, что следующий запрос генерирует бесконечный цикл, поскольку время ожидания истекает через 30 секунд. Запуск его в C ++ никогда не возвращает к коду.

SELECT author_obj->>'$.name' FROM author WHERE author_obj->'$.name' NOT IN 
    (SELECT DISTINCT author_obj->'$.name' 
    FROM response INNER JOIN author ON response.author_id = author.id 
    WHERE response.parent IS NOT NULL
    GROUP BY author.id);

Внутренняя часть работает как положено и возвращает авторов в базе данных, которые ответили на какой-то другой пост за 1,5 секунды.

Цель запроса - найти всех пользователей, которые только публикуют сообщения, но никогда не отвечают другим пользователям, где пользователи сохраняются как объекты JSON.

1 Ответ

0 голосов
/ 02 мая 2019
SELECT author_obj->>'$.name'
FROM author 
WHERE author_obj->'$.name' NOT IN 
    (SELECT DISTINCT author_obj->'$.name' 
    FROM response
    INNER JOIN author ON response.author_id = author.id 
    WHERE response.parent IS NOT NULL
    GROUP BY author.id)

может быть быстрее таким образом:

SELECT a1.author_obj->>'$.name'
FROM author a1
WHERE NOT EXISTS
    (SELECT 1 FROM
    FROM response r
    INNER JOIN author a2 ON r.author_id = a2.id 
    WHERE a2.author_obj->'$.name' = a1.author_obj->'$.name'
      AND r.parent IS NOT NULL)

(Предостережение: возможно, я не рефакторинг правильно).

...