【问题标题】:Slow update command慢更新命令
【发布时间】:2017-05-09 17:41:11
【问题描述】:

我在 posgresql 9.6 中运行了以下命令:

./bin/createdb testSpatial
./bin/psql -d testSpatial -c "CREATE EXTENSION postgis;"
create table test(name character varying(250), lat_long character varying(90250), the_geo geography);
\copy test(name,lat_long) FROM 'test.csv' DELIMITERS E'\t' CSV HEADER;
CREATE INDEX spatial_gist_index ON test USING gist (the_geo );
UPDATE test SET the_geo = ST_GeogFromText('SRID=4326;'||lat_long);

但是,对于包含一百万行的表,更新命令似乎永远运行。已经 14 小时,但更新命令仍在包含 64 GB RAM 的服务器上运行?

【问题讨论】:

    标签: sql postgresql postgis postgresql-9.1


    【解决方案1】:

    检查您的UPDATE 命令,实际上您正在更新所有记录,因此如果您说一百万行,那么所有记录都会得到处理。您可能希望使用WHERE 条件使其更快(在这种情况下,它还将使用该过滤列上的索引),如下所示,除非您真的打算更新整个表记录。

    UPDATE test 
    SET the_geo = ST_GeogFromText('SRID=4326;'||lat_long)
    WHERE id = <value>;
    

    【讨论】:

    • 我需要在 y 表的每一行中插入“lat_long”值(当前作为字符变量存在)作为地理...即我需要更新整个表记录...有没有其他有效的方法可以在表中插入(纬度,经度)作为地理
    • 在手机上:您可以使用批量插入
    • 非常感谢,但是如何在 postgres 中批量插入地理数据类型
    猜你喜欢
    • 1970-01-01
    • 2011-02-02
    • 1970-01-01
    • 2011-01-05
    • 2018-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多