我该如何提高查询性能?

时间:2012-10-30 22:59:25

标签: sql performance indexing db2

我创建了一个包含几列的表。

MyTable

  • Column1 - > RecordId(int)
  • 第2列 - >标题(varchar)
  • Column3 - >短名称(varchar)
  • Column4 - > (varchar)
  • Column5 - > VARCHAR

    ...

    ...

  • 第10栏 - > VARCHAR

我没有将此表与任何其他表一起加入。我在表格中有4行数据。

当我查询特定RecordId的标题,短名称时,查询似乎太慢了。加载页面几乎需要7秒钟。

我没有在我的表上使用任何索引。你能否建议我如何提高我的表/查询性能?

我正在从我的jsp进行数据库连接,以便在列表框中显示查询结果。

我的代码看起来像这样 - conn = DataObjectConnectionPool.getInstance()。getConnection(); prepStmt = conn.prepStmt(“选择标题,来自MyTable的短名称,其中RecordId = 1”);

3 个答案:

答案 0 :(得分:0)

您应该在RecordId上定义主键

这会产生在该列上创建索引的副作用。

BUT

如果您的页面在7秒内加载,并且表中只有4行数据,则问题几乎肯定不在DBMS中。

答案 1 :(得分:0)

在具有4行的表上创建索引绝对没有意义。如果您希望在dbms中查看执行查询的时间,请在运行查询后从包缓存中获取一些数据。

select num_exec_with_metrics, total_act_time,  pool_read_time
  from table(mon_get_pkg_cache_stmt(null,null,null,null))

该表函数中还有100个其他列涉及不同类型的等待等。

答案 2 :(得分:-1)

基本上你在代码中使用这个sql查询:

select title,shortname from MyTable where RecordId=1

从数据库端,您可以通过在RecordID列上创建索引,然后执行runstats ==>

来加快查询速度
create index MyIndex on MyTable (RecordID) Compress yes Allow reverse scans;
runstats on table Mytable and indexes all shrlevel change;