我和朋友正在开发一个使用
sql Server的新项目.在我之前完成项目的
sql中,我总是将索引放在JOIN或WHERE中使用的任何字段上.
我的朋友只有在他们有性能需求时才添加它们.这个想法是维护索引需要付出代价,并且您希望确保支付这笔费用.可以公平地说,有些查询不会经常使用,而且有些表会比其他表更加积极地添加.
因此,我正在寻找有关数据库索引的“最佳实践”的建议.什么对你有用?
我个人倾向于主动
方法:根据您的
查询,在需要的地方
添加索引.正如您所说,在JOIN或WHERE中涉及的字段.每个索引都会加速读取
查询,但会降低写入速度(因为每次写入都需要更新索引).因此,对于写密集型表,可能需要其他
解决方案(数据仓库,复制……).
另一种方法,只添加性能需要它们的索引,只有在你进行主动监控时才有效,但即使这样也有一些缺点:
>您将不得不向遇到性能问题的表添加索引.在添加索引时,您的表被锁定 – 这是一个使用频繁的表!>通常在测试时,测试数据比应用程序中的实际数据小几个数量级.瓶颈可能会被忽视.