【问题标题】:database perfomance tuning数据库性能调优
【发布时间】:2014-01-23 19:53:09
【问题描述】:

有一个用户表有 1000 万条记录, 以下是表的架构 用户(user_id、user_name、first_name、last_name、address)

在上表上运行以下选择时,运行查询需要 18 分钟,并且在此期间整个数据库变慢。

select * from user where user_id=1000 and username='test';

在这种情况下,我们如何加快选择和/或提高数据库性能?

【问题讨论】:

  • 什么关系型数据库?你检查过执行计划吗?表上有索引吗?
  • 首先要看的通常是索引,但您没有提到您使用什么平台让我们进一步帮助您。
  • 对于初学者,只需选择您需要的列...如果您要获取大量不必要的数据,* 将会很昂贵。
  • 在这种情况下在 RDBMS 上优化性能的一般问题。是在技术能力上问的。好的,谢谢

标签: sql performance database-administration sql-tuning


【解决方案1】:

这里有一些提示,

1.如果用户标识不是唯一/主键,则在用户标识和用户名(分组索引)上添加索引,这肯定会提高性能

2.如果可能的话,自动生成用户ID和主键,如果你这样做,你的查询将减少到

"select * from user where user_id=1000" 使用单个索引(用户 ID 默认作为主键)会更快,并且与分组索引相比会节省空间

3.提高性能的基本规则,总是只获取需要的列(select * from 总是最差的)

创建索引后不要忘记运行 runstats 和 reorg

上面提到的聚集索引也有帮助,但聚集索引需要更多空间。(如果您的查询可以改进或减少,为什么要浪费更多空间)

希望这会有所帮助..

【讨论】:

    【解决方案2】:

    确保您在 user_id 上有一个聚集索引,在 'test' 上有一个非聚集索引。

    保证性能提升 10,000%

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-14
      • 1970-01-01
      • 1970-01-01
      • 2020-08-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多