我想更清洁,更有效地编码,我想知道以下问题的任何其他建议:
我有一个mySQL数据库,其中包含有关一组照片名称的数据.哦,说100张照片的名字
表1 :(照片)具有以下字段:photo_id,photo_name
Ex数据:
1 | sunshine.jpg
2 | cloudy.jpg
3 | rainy.jpg
4 | hazy.jpg
...
Run Code Online (Sandbox Code Playgroud)
表2 :(类别)具有以下字段:category_id,category_name,category_order
Ex数据:
1 | Summer Shots | 1,2,4
2 | Winter Shots | 2,3
3 | All Seasons | 1,2,3,4
...
Run Code Online (Sandbox Code Playgroud)
通过逗号分隔值每个条目以这种方式存储照片的顺序是否有效?这是我以前见过的一种方法,但我想知道运行时是否还有其他更快的东西.
使用这种方式,我认为不可能在类别表和照片表上进行直接的INNER JOIN,以获得每个类别的所有照片的单个匹配列表.
例如:夏季拍摄 - > sunshine.jpg,cloudy.jpg,hazy.jpg因为它与1,2,4相匹配
遍历所有类别然后照片的迭代将具有O(n ^ 2)并且必须有更好/更快的方式.请教育我:)
在我看来,您可以使用另一个表格来查看照片和类别之间的关系,包括字段category_id,order_id和photo_id
我认为使用起来会更简单,你就可以加入了
如果您决定使用该解决方案,我还建议您将photo_id设置为该新表中的索引.
- 编辑 -
使用'index'以某种方式告诉MySQL您希望优化对索引列的研究,当您注意到许多查询在特定列上具有WHERE和/或JOIN时,通常最好将列设置为索引.此外,除非它简化某些内容,否则将多个数据组合成一个单独的数据几乎绝不是一个好主意,例外情况可能是将电话号码前缀与实际数字组合在一起以及类似的一些事情,但它们是例外情况.如果你使用文件,你在表中硬编码顺序的方式会很好,但在数据库中,你最好使用另一个表而不是使用逗号分隔符.任何问题?
| 归档时间: |
|
| 查看次数: |
797 次 |
| 最近记录: |