Я использую mysql-workbench
6.3 на Ubuntu 18.04.
У меня есть три таблицы, созданные следующим образом:
CREATE TABLE `prefix_random` (
`domain` varchar(500) NOT NULL,
PRIMARY KEY (`domain`),
UNIQUE KEY `domain_UNIQUE` (`domain`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
Примечание: есть дополнительные 32 поля, но я не запрашиваю ихдля краткости опущено.
Пример:
domain
-----------------
sub.example.net
Вторая таблица:
CREATE TABLE `noprefix_random` (
`domain` varchar(500) NOT NULL,
PRIMARY KEY (`domain`),
UNIQUE KEY `domain_UNIQUE` (`domain`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
Примечание: есть дополнительные 32 поля, но я их не запрашиваю, опущенодля краткости.
Пример:
domain
----------------------
example.net
Третья таблица:
CREATE TABLE `new_random` (
`new_domain` varchar(500) NOT NULL,
PRIMARY KEY (`new_domain`),
UNIQUE KEY `new_domain_UNIQUE` (`new_domain`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
Примечание: есть дополнительные 3 поля, но я не запрашиваю их, опущено для краткости.
Пример:
new_domain
------------------------
http://sub.example.com
Я хочу сделать запрос, который идентифицирует общее имя example.com
в трех таблицах следующим образом:
Запрос:
SELECT `new_random`.`new_domain`,`prefix_random`.`domain`,`noprefix_random`.`domain`
FROM `myscheme`.`new_random`
JOIN `myscheme`.`prefix_random`
# the substring to extract the part: sub.example.com
ON substring_index(`new_random`.`new_domain`,'http://',-1) = `prefix_random`.`domain`
JOIN `myscheme`.`noprefix_random`
# by adding sub, it becomes: sub.example
ON CONCAT('sub.',`noprefix_random`.`domain`) = `new_domain`,`prefix_random`;
Ожидаемый результат:
http://sub.example.com, sub.example.com, example.com
Запрос длится вечно.Если я ограничу вывод небольшим числом, используя L
LIMIT 10;
, я получу результаты.Количество записей не слишком велико.prefix_random
содержит 620062, noprefix_random
содержит и 62294, и 588380 записей.
В чем проблема?Можете ли вы помочь мне выполнить запрос?