我要删除未使用的字段以提高清晰度并可能提高性能的表格。但首先我必须找出未使用的字段。对于更优雅的解决方案有什么建议吗?也许在 SQL 中?
问问题
1176 次
2 回答
0
除非您知道对数据库执行的所有可能查询,否则没有 100% 确定的方法可以发现未使用的列。
以下是您需要涵盖的两个一般事项:
查找数据库中对该表的所有引用(函数、存储过程、触发器和其他引用该表的)。
检查所有正在执行的应用程序代码,看看是否可以找到对该表的引用。
尝试使用ApexSQL 搜索数据库参考,因为它是免费工具。
于 2013-08-26T09:52:24.010 回答
0
这是 linqpad 中的 C# 程序。
void Main()
{
// Row count of non null fields in a table
var l = Mapping.MappingSource.GetModel(typeof(DataContext)).GetMetaType(typeof(Briefing)).DataMembers;
var list = new List<xfield>();
object[] xparams = new object[0];
foreach( var field in l.Where (x => x.DbType != null) ) {
var sql = string.Format("SELECT count({0}) from table_name where {0} is not null", field.Name.ToLower());
var result = ExecuteQuery<int>( sql, xparams );
var count = result.First();
list.Add( new xfield { name = field.Name, rows = count } );
}
list.Where( e => e.rows == 0 ).Dump();
}
public class xfield
{
public string name;
public int rows;
}
于 2013-08-25T20:11:50.470 回答