gpt4 book ai didi

mysql - 连接多个 MySQL 表进行搜索。这是 MySQL View 的一个很好的用途吗?

转载 作者:行者123 更新时间:2023-11-29 06:04:32 24 4
gpt4 key购买 nike

我试图让在一组相互链接的 MySQL 表上快速、轻松地执行关键字搜索。

有一个具有唯一“itemID”的项目表,相关数据分布在其他表中,所有表都通过 itemID 链接。

我创建了一个 View ,它将大部分信息连接成一种可用的形式。这使得搜索变得非常容易,但对性能没有帮助。这是我第一次使用 View ,也许不是正确的使用。如果有人能给我一些指示,我将不胜感激。

一个简化的例子是:

项目表:

itemID |  name 
------ -------
1 "James"
2 "Bob"
3 "Mary"

关键字表:

keywordID |  itemID |  keyword
------ ------- -------
1 2 "rabbit"
2 2 "dog"
3 3 "chicken"

还有更多关系...

我的观点:(使用 CONCAT_WS、GROUP_CONCAT 和相当多的 JOIN 创建)

itemID |  important_search_terms 
------ -------
1 "James ..."
2 "Bob, rabbit, dog ..."
3 "Mary, chicken ..."

然后我可以在 View 中搜索“mary”和“chicken”并轻松找到 itemID=3 匹配。太棒了!

问题是,它似乎正在为每个搜索执行 CONCAT 和 JOIN 的所有工作,但效率不高。根据我当前的测试,数据搜索大约需要 2 秒,这不切实际。

我希望 View 能够以某种方式缓存,但也许我没有以正确的方式使用它。

我可以有一个包含此搜索信息的实际表格,我会定期更新它,但它看起来并不像我希望的那么整洁。

如果有人有任何建议,我将不胜感激。非常感谢

最佳答案

嗯, View 只不过是让您更容易阅读查询的内容,但每次都会在下面执行 SQL 语句。

所以难怪它和您运行该语句本身一样慢(甚至更慢......)。

通常这是通过索引作业(在夜间运行,不会打扰任何人)或索引插入(插入新数据时,检查运行是否将它们插入到索引的有趣单词中是个好主意)来完成。

在运行时做到这一点确实很困难,需要精心设计的数据库结构,并且大多数时候需要强大的 SQL Server 硬件(取决于数据量)。

关于mysql - 连接多个 MySQL 表进行搜索。这是 MySQL View 的一个很好的用途吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12183841/

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