-3

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

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

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

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

4

2 回答 2

1

这里有一些提示给你,

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

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

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

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

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

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

希望这可以帮助..

于 2014-01-24T07:28:51.403 回答
0

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

保证性能提升 10,000%

于 2014-01-23T19:55:00.120 回答