有一个用户表,有1000万条记录, 以下是表的架构 user(user_id,user_name,first_name,last_name,address)
当在上表中运行以下select时,运行查询需要18分钟,整个数据库在此期间会变慢。
select user from user user_id = 1000 and username ='test';
在这种情况下,我们如何加快选择和/或提高数据库性能?
答案 0 :(得分:1)
这里有一些提示,
1.如果userid不是唯一/主键,则会在userid和username(分组索引)上添加索引,以确保提高性能
2.如果可以使用户ID自动生成和主键,如果这样做,您的查询将减少到
“select * from user user_id = 1000”,单个索引会更快(userid默认为主键),与分组索引相比可以节省空间
3.性能改进的基本规则,总是只获取所需的列(select * from is worst always)
不要忘记在创建索引后运行runstats和reorg
上面提到的聚簇索引也有帮助,但聚簇索引需要更多空间。(如果你的查询可以在你的情况下得到改进或减少,为什么要浪费更多空间)
希望这会有所帮助..
答案 1 :(得分:0)
确保user_id上有聚簇索引,'test'上有非聚集索引。
保证性能提升10,000%