数据库结构的设计与如何最大限度的利用索引

举个例子如一张消息表

结构如些  Id (自增主键) Content(内容)    UserId(说话人Id)  IsWonderful(是否是精彩发言)   Top(是否置顶) IsBarrage( 是否是弹幕)

当这个结构的表 数据还少时取 经常发言 置顶发言 和弹幕 速度比较快

但是数据一多 30多万条的时候查找数据

37w条数据 中查找经常发言

用时4.753 秒

虽然加上索引之后可以找0.1秒钟找到数据  但是每加一个索引  写入速度就变慢一点  后面还有 弹幕置顶也要查找 岂不是都要加索引  这样写入非常慢尤其是这样表写入频繁的情况下,更说明这张表的设计有很大的问题

这样时候在在建一张表 结构是

    Id 主键

Type 类型 1-精彩发言  2-置顶,3-弹幕

    ChatMessageId  消息表Id

接下来 用事实验证的时候了

接下来 我们看下分析

完美的利用了已经存在的主键索引

在37w条数据 中找到经常发言只用了0.0001秒 而且也没增加新的索引  怎么看到这里是不是若有所思了

以后设计数据库的时候不要老想的增加新的索引(除非写入和改变很少的情况下)  尽量利用自带的主键索引

时间: 2024-10-12 11:00:21

数据库结构的设计与如何最大限度的利用索引的相关文章

数据库结构 数据库连表

数据库结构: DDL: 库,表,索引,字段,视图,触发器,存储过程    数据库用户 DML   : CRUD   增删改查 DCL : 用户权限管理 DESCRIBE having:在统计的基础上进行再过滤,条件字段允许是表中不存在的统计字段名 1.数据库连表 left join right join inner join 2.数据库引擎(系统资源,数据安全,并发性) myisam innodb 锁 事务 3.数据库优化 索引:单索引,组合索引(索引是占空间的) sql:1.谨慎使用

树形结构的数据库表Schema设计-基于左右值编码

树形结构的数据库表Schema设计 程序设计过程中,我们常常用树形结构来表征某些数据的关联关系,如企业上下级部门.栏目结构.商品分类等等,通常而言,这些树状结构需要借助于数据库完 成持久化.然而目前的各种基于关系的数据库,都是以二维表的形式记录存储数据信息,因此是不能直接将Tree存入DBMS,设计合适的Schema及其对 应的CRUD算法是实现关系型数据库中存储树形结构的关键. 理想中树形结构应该具备如下特征:数据存储冗余度小.直观性强:检索遍历过程简单高效:节点增删改查CRUD操作高效.无意

导出数据库表为world文档说明,已经PowerDesigner导出表结构pdm设计文档

如何使用"mysql导出数据库结构为world工具"以及如何使用powerdesigner映射数据库模型 一.通过powerdesigner配置ojdbc 1.安装并打开powerdesigner,新建一个模型文档,如下图 2.选择"database" -> "update model from database" 3.弹出窗口后选择"using a data cource",点击右侧图标 4.选择"confi

数据库的字段设计的几个心得

数据库的字段设计有很多细节性的技巧,下面将过去在开发中体会到经验整理出来,做个备忘. tinyint 是-128到128 .当属性设置为unsigned的时候.最大值就是255了.现在知道为什么需要设置为unsigned属性了.原来是为了最大限度的使用给予的存储空间.如果不设置.那么假如你的值都是正数的.那么-128这一百多个数字就相当于是浪费了.澳门葡京赌场是真的吗 tinyint会自动设置为tinyint(3). smallint 不设置unsigned的时候,也有3万多的样子. tinyt

数据库范式的设计

数据库范式的设计     关系数据库就是通过二维表(行和列)来保存数据. 实体:现实世界中客观存在并可以被区别的事物.比如"一个学生"."一本书"."一门课"等等.值得强调的是这里所说的"事物"不仅仅是看得见摸得着的"东西",它也可以是虚拟的,不如说"老师与学校的关系". 属性:教科书上解释为:"实体所具有的某一特性",由此可见,属性一开始是个逻辑概念,比如说,&qu

数据库课程实习设计——酒店房间预订管理系统

项目源码地址:https://github.com/TreeDream/Hotel 转载注明出处!!! 目 录 1 问题的提出................................................................................................................... 3 2  可行性分析.............................................................

用 Flask 来写个轻博客 (8) — (M)VC_Alembic 管理数据库结构的升级和降级

目录 目录 前文列表 扩展阅读 Alembic 查看指令 manager db 的可用选项 初始化 DB Migrate 开始第一次跟踪 将记录文件应用到数据库中实时升级数据库结构 回滚到某一个记录环境中 前文列表 用 Flask 来写个轻博客 (1) - 创建项目 用 Flask 来写个轻博客 (2) - Hello World! 用 Flask 来写个轻博客 (3) - (M)VC_连接 MySQL 和 SQLAlchemy 用 Flask 来写个轻博客 (4) - (M)VC_创建数据模型

C语言连接MySQL数据库(课程设计总结)

刚结束课程设计,也预示着假期马上就要到来了.本次课程设计并不算难,无非就是让做一个XXX系统,实现用户的注册.登录.菜单管理.超级用户等等一些功能,到现在为止已经做过好几个了,所以基本流程都熟悉了!我觉的最值得总结的地方就是:C语言与数据库连接,这块内容!因为之前都是用文件实现的. ★平台 这次课程设计主要用到: ● VC ++ 6.0 ● mysql-5.0.18-win32 ● Navicat for MySQL(MySQL 图形化的工具) ★配置 在写代码之前首先要让编译器知道MySQL数

PDM导出数据库结构时报错Generation aborted due to errors detected during the verification of the mode

转载:http://hi.baidu.com/clqaitxp/item/8aa7af12ff8883faddeeca10 做数据库结构导出时,发现有报错信息,之前还是好的,只是上午调整了一张表.下面看具体现象: 在导出的结果列表中可以发现有一个对象被打X了, 双击这个错误,可以看到是哪个表引起的错误,再来看看这个表的表结构是否有异常,结果发现这个表上建序列的时候没有勾上主键. 更改下这个表的属性,,对serial列选上P(primary key). 再执行一次导出,OK. 当然,你不做数据库表