我的表包含 97 列,数据类型为 varchar(200) 约 80% 和 bigint,char。
从 mytable 中选择 count(*) 它返回 4500 行
我正在使用 SQL 语句测试 100 行
select * from mytable 使用时间约 2.3 分钟
我认为,如果返回所有记录太慢了
请推荐我加快查询和结果的方法。
我的数据库服务器是 db2 9.5
我的表包含 97 列,数据类型为 varchar(200) 约 80% 和 bigint,char。
从 mytable 中选择 count(*) 它返回 4500 行
我正在使用 SQL 语句测试 100 行
select * from mytable 使用时间约 2.3 分钟
我认为,如果返回所有记录太慢了
请推荐我加快查询和结果的方法。
我的数据库服务器是 db2 9.5
为了提高性能,您应该做的第一件事是停止使用SELECT *
. 重写查询以获取您需要的列。
第二件事是添加一个 WHERE 子句。你真的需要返回表格的所有行吗?
第三件事是索引,你的表有没有,你可以在你的 WHERE 语句中使用索引列等等。
您需要隔离慢速查询或显示查询。我假设它是两者的结合。
当您有 97 列,每列都是 varchar(200) 时,sql 无法将所有信息存储在page的同一行中。最坏的情况是 97 * 202(我使用 202 而不是 200,因为 sql 需要在每列中存储 varchar 的长度,我相信它将它存储为两个字节) 19594 比页面上的行大得多可以处理。TL;博士; 规范化您的表并将列分解为另一个表上的逻辑单元。
同样执行 SELECT * FROM X 将导致全表扫描,这比在索引列上查询要慢得多。
如果您必须执行 SELECT * FROM X 并且您必须有 97 列,请将列数据类型更改为较小的数据类型 (int,tinyint,char(10)),这将优化存储并加快查询速度。