gpt4 book ai didi

mysql 使用关键字表搜索...最佳方法

转载 作者:行者123 更新时间:2023-11-30 01:10:02 25 4
gpt4 key购买 nike

我正在为拍卖中的用户编写一个警报系统。我需要建立一个用户列表,其中包含与其关键字匹配的拍卖品列表。我有一个包含数千行的用户表,每个用户可以有第二个表中的多个关键字。我需要在拍卖批处理表(标题和正文)中搜索所有这些关键字,有几千个批处理......

查询次数最少的最佳方法是什么?

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 构建用户批处理列表或者以某种巧妙的方式使用子查询?!

你觉得怎么样?

非常感谢

抢劫。

最佳答案

SELECT t1.id, t1.title, t2.keyword, t3.id, t3.firstname, t3.lastname, t3.email, count(t1.id) AS count 

FROM auction_lots t1

INNER JOIN user_keywords AS t2 ON

( t1.body LIKE CONCAT( '%', t2.keyword, '%' ) )

INNER JOIN user_accounts AS t3 ON

t2.user_id = t3.id

WHERE t3.is_active = 1

group by t2.keyword, t2.user_id

order by t2.user_id

您是如何解决这个问题的?

我有相同的数据和任务,不同的行业。到目前为止,我已经提出了上述内容,我对其进行了转换以适合您的数据,但它只会连接一个字段 t1.body,并且当针对具有数千行的表进行基准测试时,性能不太好。任何更好的解决方案,我洗耳恭听......

关于mysql 使用关键字表搜索...最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19519611/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com