我正在为拍卖中的用户编写警报系统。我需要建立一个用户列表,其中包含与其关键字匹配的拍卖批次列表。我有一个包含数千行的用户表,每个用户可以从第二个表中拥有多个关键字。我需要为所有这些关键字搜索拍卖批次表(标题和正文),有几千个批次....
查询次数最少的最佳方法是什么?
CREATE TABLE `auction_lots` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`title` varchar(50) NOT NULL,
`body` text NOT NULL,
PRIMARY KEY (`id`),
FULLTEXT KEY `search` (`body`,`title`)
);
CREATE TABLE `user_accounts` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`is_active` tinyint(1) unsigned NOT NULL DEFAULT '0',
`firstname` varchar(20) NOT NULL,
`lastname` varchar(20) NOT NULL,
`email` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
);
CREATE TABLE `user_keywords` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`user_id` int(10) unsigned NOT NULL,
`keyword` varchar(20) NOT NULL,
PRIMARY KEY (`id`),
KEY `user_id` (`user_id`)
);
我在想... 2 个查询,获取所有关键字,获取与所有关键字匹配的所有批次,然后使用 PHP 构建用户批次列表或以某种巧妙的方式使用子查询?!
你怎么看?
非常感谢,
抢。