У меня есть две таблицы:
CREATE TABLE IF NOT EXISTS `nl_members` (
`member_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`member_email` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
`member_confirmation_code` varchar(35) COLLATE utf8_unicode_ci NOT NULL,
`member_enabled` enum('Yes','No') COLLATE utf8_unicode_ci NOT NULL DEFAULT 'Yes',
PRIMARY KEY (`member_id`),
UNIQUE KEY `TUC_nl_members_1` (`member_email`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=58520 ;
CREATE TABLE IF NOT EXISTS `nl_member_group_xref` (
`group_id` int(10) unsigned NOT NULL,
`member_id` int(10) unsigned NOT NULL,
`member_subscribed` enum('Yes','No') COLLATE utf8_unicode_ci NOT NULL DEFAULT 'Yes',
`subscribe_date` int(10) unsigned NOT NULL DEFAULT '0',
`unsubscribe_date` int(10) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`group_id`,`member_id`),
KEY `nl_members_nl_member_group_xref` (`member_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
ALTER TABLE `nl_member_group_xref`
ADD CONSTRAINT `nl_members_nl_member_group_xref` FOREIGN KEY (`member_id`) REFERENCES `nl_members` (`member_id`),
ADD CONSTRAINT `nl_member_groups_nl_member_group_xref` FOREIGN KEY (`group_id`) REFERENCES `nl_member_groups` (`group_id`);
Обе имеют довольно большой объем данных о миллионах из них.
Я хочу, чтобы эффективность была в примененииМИНУС на наборе результатов.
Например,
я хочу получить всех пользователей из группы 1 с идентификатором: 1 МИНУС всех пользователей из группы 2 с идентификатором: 2 и группы 3 с идентификатором: 3
Как я могу сделать это эффективно?с максимально быстрым выполнением запроса.
Обновление
Что я хочу, это так -
в таблице членов 'nl_members', я сохраняюсписок всех членов, которые могли быть связаны с одной или несколькими группами.
для каждой ассоциации группы для члена будет строка в таблице 'nl_member_group_xref'.
, так что еслиэлемент связан с 3 группами. В таблице member_group_xref будет 3 записи.
Теперь я хочу, чтобы все члены были включены в группу 1, но исключены участники, если они также принадлежат группе 2 и группе 3.
Надеюсь, это поможет.