数据库结构的设计与如何最大限度的利用索引
2016-06-26 20:03
316 查看
举个例子如一张消息表
结构如些 Id (自增主键) Content(内容) UserId(说话人Id) IsWonderful(是否是精彩发言) Top(是否置顶) IsBarrage( 是否是弹幕)
当这个结构的表 数据还少时取 经常发言 置顶发言 和弹幕 速度比较快
但是数据一多 30多万条的时候查找数据
37w条数据 中查找经常发言
用时4.753 秒
虽然加上索引之后可以找0.1秒钟找到数据 但是每加一个索引 写入速度就变慢一点 后面还有 弹幕置顶也要查找 岂不是都要加索引 这样写入非常慢尤其是这样表写入频繁的情况下,更说明这张表的设计有很大的问题
这样时候在在建一张表 结构是
Id 主键
Type 类型 1-精彩发言 2-置顶,3-弹幕
ChatMessageId 消息表Id
接下来 用事实验证的时候了
接下来 我们看下分析
完美的利用了已经存在的主键索引
在37w条数据 中找到经常发言只用了0.0001秒 而且也没增加新的索引 怎么看到这里是不是若有所思了
以后设计数据库的时候不要老想的增加新的索引(除非写入和改变很少的情况下) 尽量利用自带的主键索引
结构如些 Id (自增主键) Content(内容) UserId(说话人Id) IsWonderful(是否是精彩发言) Top(是否置顶) IsBarrage( 是否是弹幕)
当这个结构的表 数据还少时取 经常发言 置顶发言 和弹幕 速度比较快
但是数据一多 30多万条的时候查找数据
37w条数据 中查找经常发言
用时4.753 秒
虽然加上索引之后可以找0.1秒钟找到数据 但是每加一个索引 写入速度就变慢一点 后面还有 弹幕置顶也要查找 岂不是都要加索引 这样写入非常慢尤其是这样表写入频繁的情况下,更说明这张表的设计有很大的问题
这样时候在在建一张表 结构是
Id 主键
Type 类型 1-精彩发言 2-置顶,3-弹幕
ChatMessageId 消息表Id
接下来 用事实验证的时候了
接下来 我们看下分析
完美的利用了已经存在的主键索引
在37w条数据 中找到经常发言只用了0.0001秒 而且也没增加新的索引 怎么看到这里是不是若有所思了
以后设计数据库的时候不要老想的增加新的索引(除非写入和改变很少的情况下) 尽量利用自带的主键索引
相关文章推荐
- SQL一次性查询一个字段不同条件下的统计结果
- MySQL存储过程
- SQL错误:”***“必须是批处理中仅有的语句
- MySQL基本操作
- MySQL存储引擎介绍
- mysql5.7.13安装配置及使用
- mysql数据库之索引和分析索引
- MySQL如何优化ORDER BY
- Redis - Java连接
- MySQl之最全且必会的sql语句
- MySQl之最全且必会的sql语句
- sql自动生成model的模块
- MoNyog 5.72 mysql监控工具的介绍
- MYSQL Partition
- jdbc和SQL Server 2014 连接,以及SQL Server数据库远程访问设置方法
- postgresql----JOIN之多表查询
- 分布式监控系统Zabbix-3.0.3-完整安装记录(2)-添加mysql监控
- mongodb 3 java教程
- 《SQL必知必会》19-22章笔记
- 什么是MongoDB原子操作