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