小编Joe*_*Joe的帖子

PostgreSQL查询调优指南?

我发现了许多关于调优数据库服务器的资源,但我对调整各个查询的工作并不多.

例如,在Oracle中,我可能会尝试添加提示来忽略索引或使用排序合并与相关联接,但除了在批量加载表使用显式联接和建议之外,我在调优Postgres时找不到太多.

是否存在任何此类指南,以便我可以专注于调整运行最多和/或表现不佳的查询,希望不会对当前性能良好的查询产生负面影响?

我甚至很乐意找到一些东西来比较某些类型的查询相对于其他数据库的执行情况,所以我更清楚地知道要避免什么样的事情.

更新:

我应该提到,我在8天内把所有的Oracle DBA课程以及他们的数据建模和SQL调优课程都拿回来......所以我知道'EXPLAIN',但更多的是要告诉你出了什么问题.查询,不一定如何使它更好.(例如,'var = 1或var = 2'和'var in(1,2)'在生成执行计划时被认为是相同的?如果我用10个排列做什么怎么办?什么时候是多列?使用的索引?有没有办法让规划人员优化以获得最快的启动速度和最快的速度?从mySQL,Oracle或其他一些RDBMS迁移时,我可能会遇到什么样的"陷阱"?)

我可以编写任何复杂的查询数十种,如果不是数百种方式,我希望不必尝试所有这些,并通过反复试验找出哪种方法效果最好.我已经发现'SELECT count(*)'不会使用索引,但'SELECT count(primary_key)'将...可能是'有经验的SQL用户的PostgreSQL'那种解释了各种查询的文档避免,以及如何最好地重新编写它们,或者如何让规划人员更好地处理它们.

更新2:

我找到了不同的SQL实现比较,其中包括PostgreSQL,DB2,MS-SQL,mySQL,Oracle和Informix,并解释了您可能尝试做的事情,方法和问题,以及他的参考部分链接到Oracle/SQL Server/DB2/Mckoi/MySQL数据库等价物(这是它的标题所暗示的)和wikibook SQL方言参考,它涵盖了人们贡献的任何内容(包括一些DB2,SQLite,mySQL,PostgreSQL,Firebird,Vituoso,Oracle,MS-SQL,Ingres和Linter).

sql postgresql performance

19
推荐指数
4
解决办法
2万
查看次数

使用变量从bash运行IDL程序

我在IDL中编写了一个程序,用于根据命令行参数生成散点图.我可以直接在终端中成功调用程序,如下所示:

idl -e"scatterplot_1_2d_file.pro"$ infile $ outfile $ title $ xtitle $ ytitle $ xmin $ xmax $ ymin $ ymax $ timescale

其中$*引用了一些输入的字符串文字.问题是,我以为我只能输入那一行,将变量名代替文字,放入bash脚本,并生成一百万个散点图我在休息时.不幸的是,如果我这样做,我得到错误:

idl:-e选项不能用批处理文件指定

所以我的下一次尝试是尝试将这些命令写入我随后运行的IDL批处理文件.

这种尝试看起来像这样:

#!/bin/bash

indir=/path/to/indir/
outdir=/path/to/outdir/

files=`ls $indir`
batchfile=/path/to/tempbatchfile.pro

echo .r "/path/to/scatterplot_1_2d_file.pro" >> $batchfile

for file in $files
  do
  name=${file%\.*}
  echo scatterplot_1_2d_file $indir$name.txt $outdir$name.jpg $name "Gauge Precipitation (mm)" "NMQ Precipitation (mm)" "*" "*" "*" "*" 2 >> $batchfile
done #done file                                                                                                                                                                                                

echo exit >> $batchfile

idl <<EOF                                                                                                                                                                                                      
@/path/to/scatterplot_1_2d_file                                                                                                                                                                  
EOF                                                                                                                                                                                                            

rm $batchfile
Run Code Online (Sandbox Code Playgroud)

我不知道脚本生成的大部分错误是否相关,所以我只是发布开始,如果需要,我会稍后发布其余的:

[foo]$ bash script_thing.sh
IDL Version …
Run Code Online (Sandbox Code Playgroud)

bash idl-programming-language

7
推荐指数
1
解决办法
1万
查看次数