У меня есть 3 таблицы в базе данных: брандмауэр, интерфейс и изменения.
- брандмауэр имеет 2 столбца:
id
и name
. - интерфейс имеет 3 столбца:
id
, firewall id
и name
, где firewall id
- первичный ключ брандмауэра. - изменения имеют несколько столбцов, включая
firewall id
и interface id
.Давайте назовем эти другие столбцы changes.id
, firewall id
, interface id
, port
src
и dest
, где changes.id
- это первичный ключ изменений и автоинкременты.
changes
в конечном итоге будет содержать тысячи или миллионы строк данных.
Мне нужен запрос, который выберет последний набор уникальных комбинаций firewall id
, interface id
, src
, dest
,и port
от changes
.Я говорю последнее, потому что со временем, скорее всего, будут точные дубликаты.
У меня есть запрос, который сделает это, но я думаю, что это будет очень дорого, когда эта таблица станет большой:
SELECT DISTINCT f.name, i.name, changes.a, changes.b, src, dest, port FEOM changes INNER JOIN firewall f ON changes.a = f.id INNER JOIN interface i ON changes.b = i.id ORDER BY changes.id DESC;
Есть ли лучший способ сделать это?