对于数据量较大的系统,数据库应该如何设计 设计一个监控系统,连接有多台终端,每台终端几秒钟更新一条数据,用户比较关心最新的数据(一天内的),但是他们也会经常查询历史数据,怎么设计数据库,可以使软件界面对最新数据的刷卡比较快,对历史数据的查询响应也比较快? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1. 软件界面对最新数据的刷卡比较快想最快,那就得考虑使用缓存.2. 对历史数据的查询响应也比较快对where和关联查询的字段进行索引,可以提高查询速度 #1.触发器,个人认为不好,相当于同时两份数据,而且属于同一事务,历史表INSERT有问题时,会导致整个INSERT操作失败。#2.分区表,也不建议。它的优点:按分区存储数据,可以把数据放在不同的文件组(文件组可放在不同的磁盘)来提高效率;且当按分区段查询时,只查询表中的某个分区,效率高。缺点:需要想办法定时增长分区;SQL没按分区段查询时,效率可能会更低#3.数据量不大的话,且逻辑不复杂的情况下,建议自定义JOB,注意点:归档时,用DELETE from 源表 output into 历史表 这种方式写,保证是一个事务,不会丢数据; 加上TOP(N)条件,一次删除N条,停1秒,再删除,保证不会影响其它SQL;WHERE 主键 < 100 and 日期 < getdate() 这种方式,就是说,你确定下主键的大概值,再用日期过滤,走的是聚集索引,加上TOP(N),删除的比较快 求T-sql删除用户的方法 如何设计产品表结构啊 在线等待!高手指教 “所有者”问题 求一更新的Sql语句 求解关于数据表的主外建问题 深信服行为管理mysql数据库用户表在哪里? 求一条SQL语句。。。 SQL调用外部的dll(用C#生成的) 这段程序是很难做。想不到好办法。大家进来看看.急..... access 数据库 asp.net 如何对编号进行处理 64位 win7 安装 sql server 2005 一直失败,怎么办
想最快,那就得考虑使用缓存.2. 对历史数据的查询响应也比较快
对where和关联查询的字段进行索引,可以提高查询速度
#2.分区表,也不建议。它的优点:按分区存储数据,可以把数据放在不同的文件组(文件组可放在不同的磁盘)来提高效率;且当按分区段查询时,只查询表中的某个分区,效率高。缺点:需要想办法定时增长分区;SQL没按分区段查询时,效率可能会更低
#3.数据量不大的话,且逻辑不复杂的情况下,建议自定义JOB,注意点:
归档时,用DELETE from 源表 output into 历史表 这种方式写,保证是一个事务,不会丢数据; 加上TOP(N)条件,一次删除N条,停1秒,再删除,保证不会影响其它SQL;WHERE 主键 < 100 and 日期 < getdate() 这种方式,就是说,你确定下主键的大概值,再用日期过滤,走的是聚集索引,加上TOP(N),删除的比较快