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