gpt4 book ai didi

MySQL JOIN vs LIKE - 更快的选择?

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

好的,首先让我简单介绍一下我正在尝试做的事情。基本上,在我的研究期间,我用 PHP 编写了一个小网络服务,它根据一些可测量的大小(如长度、 Actor 、导演、作家、流派等)计算电影彼此之间的相似程度。我用于此的数据基本上是一个数据集合从 omdbapi.com 获取。

我仍然有那个数据库,但从技术上讲,它只是一个包含每部电影所有信息的单个表。这意味着,对于每部电影,上述所有参数均以逗号分隔。因此,到目前为止,我使用了一个通过使用 LIKE 语句来封装所有这些内容的查询。查询可能会变得非常大,因为我几乎要查询表中的每个参数,有时 5 个不同的 LIKE 语句用于不同的 Actor ,对于导演和作家也是如此。当我上次使用它时,大约需要 30 到 60 秒才能进入一部电影并收到 15 部相似电影的列表。

现在我开始了我的第一份工作,并在空闲时间自学,我想在自己的网站上工作。因为我对我想用它做什么没有真正的概念,所以我想这次我会再次拿出我的旧“电影取景器”并以不同的方式使用它。现在要挑战自己,我希望整个过程更快。明白,数据永远不会改变,只能读取。它也不是“真正的”关系,因为 Actor 姓名等只是字符串,在其他任何地方都没有真正的条目。这实质上意味着具有相同名称的将被视为同一 Actor 。

现在我的实际问题来了:假设我希望我的选择查询运行得更快,运行一个脚本将逗号分隔的字符串拆分成额外的表(这些是 n 到 m 的关系,参见下面的尝试)然后加入所有这些表(它们将是 8 个或更多)或者使用 LIKE 的速度与我目前的速度大致相同?我唯一想要实现的是更快的选择查询,因为没有其他东西可以真正处理数据。

database structure movies structure

这是我目前拥有的。请记住,我仍然需要为电影与这些表格中的每一个之间的关系创建表格。这样做之后,我可以删除电影表中的列,最终不得不使用 EACH 查询连接很多表。我在这里看到的唯一真正的优势是,在单个表上创建索引比一个(或几个)覆盖一个大电影表更容易。

我希望所有这些对您来说都有意义。我很欣赏任何简短或冗长的回答,就像我说的,这主要是为了自学,因此,我没有/不需要真正的商业模式。

最佳答案

我不明白你现在有什么。您似乎只显示了表的大小,但没有显示其内部结构。您需要使用规范化规则将数据分离到单独的表中,然后放置正确的索引。索引将使您的查询非常快。查询上方的尺寸是什么意思?您是否曾经针对查询运行过 EXPLAIN ANALYZE,请发布查询 我无法从结果中猜出您的查询。 YT上有很多优化视频。

关于MySQL JOIN vs LIKE - 更快的选择?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27258696/

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