Таблицы ~ 500000 строк, 137MB, время запроса 1,591 секОказание помощи в При очистке MySQL Query Присоединяйтесь, чтобы найти изменения в междурядьях
Я младший программист тестирования моего пыла на нашей основе MySQL OTRS базах данных билета. Я ищу экземпляры, в которых билет перемещается между очередями. Индикатор перемещения существует в той же строке, что и новая очередь, и я настроил запрос, который пытается вернуть предыдущее значение того же столбца в одном и том же идентификаторе.
Пример билета в таблице:
id history_type_id ticket_id queue_id create_time
377 1 30 2 2012-09-14 11:06:02
378 21 30 2 2012-09-14 11:06:02
379 12 30 2 2012-09-14 11:06:02
380 4 30 2 2012-09-14 11:06:02
381 16 30 8 2012-09-14 11:08:29
383 16 30 2 2012-09-14 11:09:54
384 17 30 2 2012-09-14 11:11:28
*** Stuff Happens ***
396 27 30 2 2012-09-14 11:22:06
397 18 30 2 2012-09-14 11:22:06
Строки о которых идет речь , и . history_type_id значение для движения является , и строка выше имеет предыдущее queue_id билета. То, что я был в состоянии построить запрос, который проверяет предыдущий ID значение перед любым идентификатора значения с history_type_id из и разделяет те же TICKET_ID и вернуть queue_id из этой строки (или так я предполагаю, что 100% самообучается в этом вопросе). Как вы можете предположить, id и create_time не ограничены в каждом билете и не могут быть надежно использованы для сортировки.
Вот запрос:
SELECT OldQ.id,
OldQ.queue_id AS OldOne,
OldQ.create_time AS FirstQ,
NewQ.id,
NewQ.queue_id AS NewOne,
NewQ.create_time AS LastQ,
OldQ.ticket_id
FROM ticket_history AS OldQ
JOIN ticket_history AS NewQ
ON OldQ.id < NewQ.id
AND OldQ.ticket_id = NewQ.ticket_id
WHERE NewQ.history_type_id = '16'
ORDER BY NewQ.ticket_id,
NewQ.id,
OldQ.id
Этот «работает», но в уродливом и, вероятно, недопустимым образом, это выглядит для каждого значения OldQ.id на TICKET_ID, а не только один перед NewQ.id, и именно там я попал в блокпост. У меня есть полезные данные, но это гораздо больше, чем мне нужно. Например, здесь есть выход для вышеприведенного билета:
id OldOne FirstQ id NewOne LastQ ticket_id
377 2 2012-09-14 11:06:02 381 8 2012-09-14 11:08:29 30
378 2 2012-09-14 11:06:02 381 8 2012-09-14 11:08:29 30
379 2 2012-09-14 11:06:02 381 8 2012-09-14 11:08:29 30
380 2 2012-09-14 11:06:02 381 8 2012-09-14 11:08:29 30
377 2 2012-09-14 11:06:02 383 2 2012-09-14 11:09:54 30
378 2 2012-09-14 11:06:02 383 2 2012-09-14 11:09:54 30
379 2 2012-09-14 11:06:02 383 2 2012-09-14 11:09:54 30
380 2 2012-09-14 11:06:02 383 2 2012-09-14 11:09:54 30
381 8 2012-09-14 11:08:29 383 2 2012-09-14 11:09:54 30
Где я пытаюсь добраться до было бы возвращение таких, как это:
id OldOne FirstQ id NewOne LastQ ticket_id
380 2 2012-09-14 11:06:02 381 8 2012-09-14 11:08:29 30
381 8 2012-09-14 11:08:29 383 2 2012-09-14 11:09:54 30
Been озадачивает этот в течение нескольких часов сегодня , Я был так рад, когда они спрашивали, что на самом деле побежал, но если эти числа могут ожить, я буду в восторге
Просто заметил, сколько лет было ... немного поздно для вечеринки. К сожалению! – adamjboyce