实际上,我的应用程序面临速度慢的问题,在挖掘发现的代码时,请提出建议。
答案 0 :(得分:1)
它似乎很多,但是它是否很大程度上取决于表结构。 如果您有100列,则索引可能不多。
当然,如果您有100列,则您的数据库设计可能非常糟糕。
顺便说一句,大量索引可能会导致插入和更新性能不佳,因为所有这些索引都必须在击中表的每个事务中进行更新。 另外,如果索引过多,则很有可能会遇到损坏的索引,这可能/将影响性能。
无论如何,这是认真研究数据库设计并查看有待改进的指示。
但是我们不能肯定或否认仅仅是将您的性能问题归咎于数据库。还有更多因素,例如网络(几年前,我遇到了一个严重的性能问题,它不是由应用程序或数据库引起的,而是由应用程序服务器和数据库服务器之间的网络速度非常慢导致的,导致数据库查询的结果即使这些查询本身仅花费了毫秒,也需要10秒钟以上才能到达应用程序服务器。
答案 1 :(得分:1)
答案是,这取决于。
具有很多列的表可能需要很多索引。特别是如果该表是至关重要的表,而该表被许多不同的查询引用。另一方面,这样的表指向不良的数据模型,该模型通过用索引对表进行填充而不是解决实际问题并将表重新建模为两个或更多个表而受到困扰。
通常,许多索引会导致插入和删除以及在较小程度上进行更新,从而导致性能下降,因为所有受影响的索引都必须同步。索引的多样性不一定会导致SELECT性能下降。也就是说,只要您的统计信息是最新的,优化器就可以使用哪个索引做出明智的决定。请记住,对于某些查询,最明智的选择可能是不使用索引并进行全表扫描。
除了我同意@david之外。关于您的特定问题的猜测没有任何价值。您的“应用程序遇到速度慢” 的原因可能有很多。您需要跟踪应用程序以查找瓶颈。一旦知道了大部分时间都花在哪里,便会知道从哪里开始调查。