日志表结构如下图,除了info字段都建立了索引,数据库是sql2012,估计每天会产生万条以上记录
请问:1、type_id字段文档查看是100,文档新建是101,文档修改是102,查询文档相关日志时条件用 type_id>=100 and type_id<200,是否有必要新建一个bigtype字段?
2、大部分查询条件都包括 type_id,unit_id,project_id 这三个条件,是否必要将这三个字段一起做一个索引?
3、部分记录info字段无内容,无内容的info用null更好,还是空字符串更好?目前info字段字数不会超过500基本都是汉字,使用nvarchar(MAX),nvarchar(500),varchar(MAX),有区别吗?
4、document_id字段多为0,这种情况下没有查询这个字段的意义,能否设定为0时,不添加到索引IX_document_id中
5、id不被用来做查询条件,是否有必要用主键和id这个字段?用ctime(默认值getdate())是否会出现重复值,用来做主建是否更好?
6、日志表被我单独建了一个数据库,查询时将两个数据库联合,例如查询未读文档,用LEFT OUTER JOIN
连接两个数据表。目前纠结是否再建个表记录文档是否已读,问这种查询是否不好?
7、日志数据库只新增和查询,不修改不删除,我设置简单日志,请问还能做一些别的优化吗?
如果方便请说一下这么做的理由。