gpt4 book ai didi

mysql - 在 mySQL 中存储项目列表顺序的有效方法

转载 作者:可可西里 更新时间:2023-11-01 07:57:38 24 4
gpt4 key购买 nike

我想编写更干净、更高效的代码,并且我想知道针对以下问题的任何其他建议:

我有一个 mySQL 数据库,其中包含有关一组照片名称的数据。哦,说100个照片名字

表 1:(照片)有以下字段:photo_id, photo_name

前数据:

1 | sunshine.jpg
2 | cloudy.jpg
3 | rainy.jpg
4 | hazy.jpg
...

表2:(类别)有以下字段:category_id, category_name, category_order

前数据:

1 | Summer Shots | 1,2,4
2 | Winter Shots | 2,3
3 | All Seasons | 1,2,3,4
...

通过逗号分隔值以这种方式存储每个条目的照片顺序是否有效?这是我以前使用过的一种方法,但我想知道是否还有其他方法在运行时更快。

使用这种方式,我认为不可能对类别表和照片表进行直接的INNER JOIN以获得每个类别的所有照片的单个匹配列表。

例如:Summer shots -> sunshine.jpg、cloudy.jpg、hazy.jpg 因为它与 1,2,4 匹配

迭代所有类别然后照片将具有 O(n^2) 并且必须有更好/更快的方法。请教育我:)

最佳答案

在我看来,您可以使用另一个表来处理照片和类别之间的关系,其中包含字段 category_id、order_id 和 photo_id

我认为它使用起来会更简单,你将能够进行你的加入

如果您决定使用该解决方案,我还建议您将 photo_id 设置为该新表中的索引。

-- 编辑--

表格照片'photo_id','photo_name'

  • photo_id 是主键,唯一,自增,可能有索引

表类别 'category_id', 'category_name'

  • category_id 是一个主键,是唯一的(除非您希望同一类别可以有不同的名称),具有自动递增和可能的索引

表 category_content 'category_id','photo_id','order'

  • category_id 是指向表类别的列 category_id 的外键
  • photo_id 是指向表 photo 的列 photo_id 的外键
  • 主键是category_id和order的组合主键
  • photo_id 和 category_id 都是索引

使用“索引”以某种方式告诉 MySQL 你想优化对索引列的研究,当你注意到许多查询在特定列上有 WHERE 和/或 JOIN 时,通常最好将列设置为索引.此外,除非它简化了某些事情,否则像您所做的那样将多个数据组合成一个数据几乎从来都不是一个好主意,一个异常(exception)可能是将电话号码前缀与实际号码和类似的一些事情结合起来,但它们是异常(exception)情况。如果您使用文件,您在表中硬编码顺序的方式会很好,但在数据库中,您最好使用另一个表而不是使用逗号分隔符。有什么问题吗?

关于mysql - 在 mySQL 中存储项目列表顺序的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3012263/

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