У меня есть следующие команды, которые я выполняю на MySQL для базы данных Jira:
SELECT LOCAL_ISSUE_KEY , REMOTE_ISSUE_KEY
FROM AO_A912D8_SYNC_INFORMATION
WHERE substr(LOCAL_ISSUE_KEY, 5)
IN
(SELECT issuenum
FROM jiraissue
WHERE issuetype
IN
(SELECT ID
FROM issuetype
WHERE pname = "Story"
)
)
;
Это работает как чудо, однако я не удовлетворен, так как длина значения в LOCAL_ISSUE_KEY
является переменной: EFW-12345 или FWAI-5432.Поэтому мне пришлось бы изменить на substr(LOCAL_ISSUE_KEY, 5)
или substr(LOCAL_ISSUE_KEY, 6)
Поэтому я хотел сделать что-то другое и сделать WHERE IN
проверку правильной строки благодаря CONCAT()
, вместовычесть часть этого.
Как черновик, я сначала попробовал с этим:
SELECT LOCAL_ISSUE_KEY , REMOTE_ISSUE_KEY
FROM AO_A912D8_SYNC_INFORMATION
WHERE LOCAL_ISSUE_KEY
IN
(SELECT CONCAT('EFW-',issuenum)
FROM jiraissue
WHERE issuetype
IN
(SELECT ID
FROM issuetype
WHERE pname = "Story"
)
)
;
Но это не работает, запрос продолжается вечно
Обратите внимание, что он может выполнить запрос с чем-то вроде этого:
SELECT LOCAL_ISSUE_KEY , REMOTE_ISSUE_KEY
FROM AO_A912D8_SYNC_INFORMATION
WHERE LOCAL_ISSUE_KEY
IN
(CONCAT('EFW-','58276'))
;
Я также попытался с большим количеством ()
вокруг SELECT CONCAT()
, но он все еще помещал базу данных для поиска какпсих.Процессор уходит на 100%.
Для информации, запрос на втором SELECT
работает:
SELECT CONCAT('EFW-',issuenum) FROM jiraissue WHERE issuetype IN (SELECT ID FROM issuetype WHERE pname = "Story" );
10610 rows in set (0.06 sec)
Вот как пример данных:
issuetype
ID pname
10000 Epic
10001 Story
jiraissue
ID issuenum PROJECT issuetype
154705 1942 12000 10001
project
ID pname pkey
12000 myproject EFW
AO_A912D8_SYNC_INFORMATION
LOCAL_ISSUE_KEY REMOTE_ISSUE_KEY
EFW-1942 ABC-12354