SQL冗余字段的策略和管理
SQL冗余字段的策略和管理
http://www.examda.com/ncre/three/db/fudao/20091203/093528816.html
冗余字段的使用在多表联合查询都是大数据量的表的情况下,确实是个不错的选择,有效的减少了IO操作。但结合已有的项目产品来看,冗余字段确实是双刃剑。尤其是大项目的开发,如果忽略某个表的冗余字段的更新,那么后果是灾难性的。如何有效的管理冗余字段是开发组内必须解决的问题。我的解决方案是:使用专门的表来管理冗余字段。例如article表有以下冗余字段
fromUserName,toUserName
如何管理这两个字段呢?通过建立一个表,表结构如下
id,objTable,objName,sourceTable, sourceId,level,isUpdate
其中objTable=目标表,objName= 目标字段,sourceTable=源表,sourceId=源表ID,level=是否需要立即更新,isUpdate=是否已更新
其中,level字段很有必要,有些冗余字段并不需要在源表修改后立即更新,那么可以通过一个定期更新策略来更新。
通过库表的管理,配合一个合理的存储过程,冗余字段的使用将不再是难题。
举例,如果上面两个字段发生变化,则使用触发器或者调用这个存储过程来检查是否有需要立即更新的冗余字段,需要则立即更新,不需要则isUpdate置0,等到周期性的策略来更新同时isUpdate=1。
如果项目中使用了memcache,则还可以使用另一个思路来进一步减小数据库IO操作。下篇再展开来说。
相关文档:
sql server日期时间转字符串
日期时间转字符串
Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AM
Select CONVERT(varchar(100), GETDATE(), 1): 05/16/06
Select CONVERT(varchar(100), GETDATE(), 2): 06.05.16
Select CONVERT(varchar(100), GETDATE(), 3): 16/05/06
Select CONVERT(varchar(1 ......
Oracle调整与SQL 语句的调优的关系
在Oracle调整中我们还会涉及到SQL 语句的调优,我们接下来就来看以下的 SQL 语句的调优。我们都知道 Oracle 中的 SQL 调优是一个相当复杂的主题,甚至是需要整本书来介绍 Oracle SQL 调优的细微差别。
不过有一些基本的规则是每个 Oracle DBA 都需要跟从的,这些规则可以改善他们系统的 ......
Student(S#,Sname,Sage,Ssex) 学生表
Course(C#,Cname,T#) 课程表
SC(S#,C#,score) 成绩表
Teacher(T#,Tname) 教师表
问题:
1、查询“001”课程比“002”课程成绩高的所有学生的学号;
select a.S# from (select s#,score from SC where C#='001') a,(select s#,score
from SC wher ......
SQL Server 查询一张表的主键
http://hi.baidu.com/samxx8/blog/item/7048f8de1725835894ee37b4.html
SELECT a.name
from syscolumns a
inner join sysobjects d on a.id=d.id
where d.name='SPF_Users' and exists(SELECT 1 from sysobjects where xtype=' ......
六个防止SQL注入式攻击的建议
http://blog.csdn.net/jefflam/archive/2009/06/01/4233359.aspx
SQL注入攻击的危害性很大。在讲解其防止办法之前,数据库管理员有必要先了解一下其攻击的原理。这有利于管理员采取有针对性的防治措施。
一、 SQL注入攻击的简单示例。
statement := "SELECT * from Users WHERE Va ......