GP索引调优测试--基本篇
2016-09-24 18:55
323 查看
简介
测试数据生成
无索引测试
测试1查找特定数据
测试2查找特定范围的语句
测试3排序测试
有索引测试
测试4查找特定数据
测试5查找特定范围的语句
测试6排序测试
总结
创建表
产生1500w个随机数(0-1000),插入到表中,
查看表的大小,大约为500MB。
执行计划:
执行计划:
执行计划:
执行计划:
仅需12ms,相比较未创建索引时的1.8s,有了极大提升。
执行计划:
显示走了索引,耗时1.9s,与未创建索引所需2.0s相比,差别不大。
但调整测试语句:
并未走索引,是因为在返回记录过多的情况下,此时使用索引查取记录的开销(硬盘随机I/O)会很大,
所以仍然采用顺序浏览的方式获取记录。
执行计划:
相比较未创建索引时的24s,此时采用索引后时间反而延长!
筛选条件的稍微改变,都有可能影响索引的使用,当返回数据量过多时,此时往往不会走索引
索引设置不当,可能反而延长查询时间
测试数据生成
无索引测试
测试1查找特定数据
测试2查找特定范围的语句
测试3排序测试
有索引测试
测试4查找特定数据
测试5查找特定范围的语句
测试6排序测试
总结
简介
以下是一些基本的,以体现索引功能的测试。测试数据生成
以下参照PostgreSQL生成测试数据 进行。创建表
CREATE TABLE test ( id integer, test integer ) WITH ( OIDS=FALSE ); ALTER TABLE test OWNER TO postgres;
产生1500w个随机数(0-1000),插入到表中,
insert into test SELECT generate_series(1,15000000) as key, (random()*(10^3))::integer;
查看表的大小,大约为500MB。
无索引测试
测试1–查找特定数据
测试语句:select count(*) from test where test=200
执行计划:
测试2–查找特定范围的语句
测试语句:select * from test where test >= 800
执行计划:
测试3–排序测试
测试语句:select * from test order by test
执行计划:
有索引测试
在test字段,创建索引,创建完成后索引大小约为300MB。CREATE INDEX test6 ON test USING btree (test);
测试4–查找特定数据
测试语句:select count(*) from test where test=200
执行计划:
仅需12ms,相比较未创建索引时的1.8s,有了极大提升。
测试5–查找特定范围的语句
测试语句:select * from test where test >= 800
执行计划:
显示走了索引,耗时1.9s,与未创建索引所需2.0s相比,差别不大。
但调整测试语句:
select * from test where test >= 200,查看执行计划
并未走索引,是因为在返回记录过多的情况下,此时使用索引查取记录的开销(硬盘随机I/O)会很大,
所以仍然采用顺序浏览的方式获取记录。
测试6–排序测试
测试语句:select * from test order by test
执行计划:
相比较未创建索引时的24s,此时采用索引后时间反而延长!
总结
对于查找特定条件的记录,使用索引后查询性能会大大提升筛选条件的稍微改变,都有可能影响索引的使用,当返回数据量过多时,此时往往不会走索引
索引设置不当,可能反而延长查询时间
相关文章推荐
- Android之使用Http协议实现文件上传功能
- mysql集群之MMM简单搭建
- 通晓网络测试常用命令
- PostgreSQL新手入门教程
- PostgreSQL教程(十):性能提升技巧
- PostgreSQL教程(二):模式Schema详解
- PostgreSQL教程(十三):数据库管理详解
- 深入解读PostgreSQL中的序列及其相关函数的用法
- PostgreSQL教程(八):索引详解
- PostgreSQL教程(三):表的继承和分区表详解
- 简单介绍Ruby on Rails对PostgreSQL数组类型的支持
- PostgreSQL教程(十九):SQL语言函数
- PostgreSQL教程(四):数据类型详解
- PostgreSql新手必学入门命令小结
- 用一整天的时间安装postgreSQL NTFS权限
- FREEBSD安装POSTGRESQL笔记
- Mac OS上安装PostgreSQL的教程
- PostgreSQL8.3.3安装方法第1/2页