WEB开发网
开发学院数据库DB2 DB2 Spatial Extender 性能调优(2) 阅读

DB2 Spatial Extender 性能调优(2)

 2007-06-01 16:21:34 来源:WEB开发网   
核心提示: 清单 12. 逐行操作与多行操作的比较-- insert just a single rowINSERT INTO tabVALUES ( 1, db2gse.ST_LineString( 'linestring (11.9963970 54.9979739, 11.9947259

清单 12. 逐行操作与多行操作的比较

-- insert just a single row
INSERT INTO tab
VALUES ( 1, db2gse.ST_LineString(
        'linestring (11.9963970 54.9979739, 11.9947259 55.0000000)',
        1003) )@
-- insert multiple rows at once
INSERT INTO tab
SELECT id, db2gse.ST_LineString(wkt, 1003)
FROM  TABLE ( VALUES
    ( 1, 'linestring (11.9963970 54.9979739, 11.9947259 55.0000000)' ),
    ( 2, 'linestring (11.9872250 55.0000000, 11.9963970 54.9979739)' ),
    ... ) AS t(id, wkt)@

下载 一节中提供的脚本 test_multi_row.sql 用同样的一组数据运行两种不同的方法。被插入的数据源自我们之前用过的 shapefile 文件 europe/roads.shp。第一种方法总共花费 0.050 秒,而组合语句可以在 0.012 秒内完成。

应该注意的是,大部分时间花在解析和编译 SQL 语句上。如果使用了预置语句,那么两种方法之间的差距可能拉大,也可能缩小,这取决于您的应用程序、系统配置和数据。但是,不大可能出现第一种场景好于多行语句的情况。而且应该记住,构造函数 ST_LineString 不执行任何复杂的空间计算;它只是在文本表示上执行一次 single-sweep 扫描,并将坐标转换成内部编码。

该函数占用的内存也很少。还应记住,预置语句可用于多行插入(例如,在静态嵌入式 SQL 应用程序中)并且多行插入可以执行多次,以利用上述优点。同样的技术还用于空间导入过程中,这就是为什么在消息文件的一开始出现像 “Using 342 rows per single INSERT statement” 这样的信息性消息的原因。在导入期间,总行数受 SQL 语句的最大可能大小、提交范围(commit scope)、被导入的总行数或所有这些因素的限制。

上一页  1 2 3 4 5 6 7  下一页

Tags:DB Spatial Extender

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接