MySQL数据库结构:更多列或更多行
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了MySQL数据库结构:更多列或更多行,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1891字,纯文字阅读大概需要3分钟。
内容图文
![MySQL数据库结构:更多列或更多行](/upload/InfoBanner/zyjiaocheng/904/086e1e060635403ebceb8bd819dbee9c.jpg)
我收集人们如何用表格中的类别标记主题,如:
ID | topic_id | votes_Category_1 | votes_Category_2 |.......... | votes_Category_12
由于历史原因,我每小时都会丢弃这张桌子.
让我们说表包含200万行.在历史表中每小时倾倒一次.
如果我想添加Column_13列,这个解决方案不灵活,所以我在考虑这个:
ID | topic_id | Category_id | vote_count
此解决方案将为每个主题创建12行,其结构更好,更灵活,但我必须每小时转储2400万行.
我需要每个类别中最好的10个主题!
我想知道在案例2中使用Max on votes(其中category_id = x和topic_id = y)将比情况1慢:按categoy_x排序其中topic_id = y
哪一个会更好JUST !!!从表现角度来看:
>拥有包含14列的200万行
>拥有4列的2400万行
谢谢
解决方法:
我会看一下检索模式来决定方法.
>如果按类别检索主题,那么我将采用第二种方法,在类别字段上定义索引,以便将给定类别的所有记录连续(相对)存储在磁盘上,从而减少磁盘页数要检索.这也是因为与所有类别作为列的表相比,记录大小更小.优点是可以轻松添加更多类别,并且缺点是重复(ID,TopicID)列数据会影响数据的总大小.
>如果按主题检索,那么我会采用第一种方法,定义主题的索引.这将减少每个类别的(ID,TopicID)列值的重复,从而减少要存储的数据的总大小,并且由于行数以每小时数百万计,因此这种尺寸的减小必须是显着的.缺点是需要修改新类别的架构.
编辑:
考虑编辑中的检索模式:
I retrieve top topics and their values per Category so i order by votes_Category_x in case 1.
我理解这是在给定类别中查找具有最大投票数的前N个主题
In case 2 I would look to find max(category) for each topic_id.
这是SELECT TopicID,MAX(投票)FROM TABLE GROUP BY TopicID,Category.
记录的大小对于2百万行和24百万行是不同的,但是,重复ID和TopicID,这肯定会增加数据大小,每个记录增加8个字节.
第一个表存储200万个记录,每个记录大小为60字节(4 * 15英寸),第二个表存储2400万条记录,每个记录大小为16字节(4 * 4英寸).第二个表每小时将添加约62页,每页4KB.在一段时间内似乎是一种担忧.这也将影响由于在中间插入数据而导致的碎片,因为在第二种方法的情况下索引按类别进行组织.
在继续使用其中一个表结构之前,可能值得运行一些性能测试以更好地理解这一点,并且还要考虑添加类别的频率.
内容总结
以上是互联网集市为您收集整理的MySQL数据库结构:更多列或更多行全部内容,希望文章能够帮你解决MySQL数据库结构:更多列或更多行所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。