【发布时间】:2015-09-01 15:45:16
【问题描述】:
在几个项目中使用 Liquibase 之后,上周我开始将它与 Informix 一起使用。对于执行更新或回滚的每个命令,我必须等待大约 1 分钟才能得到结果。在 wireshark 的帮助下,我发现 Liquibase 执行以下 SQL 语句,并且这些语句需要很多时间。是否有可能避免该声明或使其更快?
SELECT trim(t.owner)::VARCHAR(128), t.tabname::VARCHAR(128), c.colname::VARCHAR(128),informix.get_data_type(c.coltype, c.extended_id, 0 )::SMALLINT, informix.schema_coltypename(c.coltype,c.extended_id)::VARCHAR(128),informix.schema_precision(c.coltype, c.extended_id, c.collength)::INTEGER, 0::INTEGER,informix .schema_numscale(c.coltype, c.collength)::INTEGER, informix.schema_numprecradix(c.coltype)::INTEGER,informix.schema_isnullable(c.coltype)::INTEGER, NULL::VARCHAR(254),CASE d。输入 WHEN 'L' THEN informix.get_default_value(c.coltype, c.extended_id, c.collength, d.default::lvarchar(256))::VARCHAR(254) WHEN 'C' THEN 'current'::VARCHAR( 254)当'S'然后'dbservername'::VARCHAR(254)当'U'然后'用户'::VARCHAR(254)当'T'然后'今天'::VARCHAR(254)否则NULL::VARCHAR( 254)结束,c.coltype::整数,informix.schema_datetype(c.coltype,c.collength)::整数,informix.schema_charlen(c.coltype,c.extended_id,c.collength)::整数,c.colno ::整数,informix.schema_nullable(c.colt ype)::VARCHAR(3), NULL::VARCHAR(128), NULL::VARCHAR(128), NULL::VARCHAR(128), NULL::smallint, informix.schema_isautoincr(c.coltype)::VARCHAR( 3),c.extended_id::INTEGER FROM informix.systables t, OUTER informix.sysdefaults d, informix.syscolumns c WHERE t.tabid = c.tabid and d.tabid = t.tabid AND c.colno = d.colno AND (t.tabtype not in ('P', 'S')) AND (d.class in ('T')) AND t.tabname like '%' AND t.owner like 'informix' and c.colname like ' %' union SELECT trim(st.owner)::VARCHAR(128), st.tabname::VARCHAR(128), c.colname::VARCHAR(128), informix.get_data_type(c.coltype,c.extended_id, 0 )::SMALLINT, informix.schema_coltypename(c.coltype,c.extended_id)::VARCHAR(128), informix.schema_precision(c.coltype, c.extended_id, c.collength)::INTEGER, 0::INTEGER, informix .schema_numscale(c.coltype, c.collength)::INTEGER, informix.schema_numprecradix(c.coltype)::INTEGER, informix.schema_isnullable(c.coltype)::INTEGER, NULL::VARCHAR(254), CASE d。 WH型EN 'L' THEN informix.get_default_value(c.coltype, c.extended_id, c.collength, d.default::lvarchar(256))::VARCHAR(254) WHEN 'C' THEN 'current'::VARCHAR(254 ) WHEN 'S' THEN 'dbservername'::VARCHAR(254) WHEN 'U' THEN 'user'::VARCHAR(254) WHEN 'T' THEN 'today'::VARCHAR(254) ELSE NULL::VARCHAR(254 ) END, c.coltype::INTEGER, informix.schema_datetype(c.coltype, c.collength)::INTEGER, informix.schema_charlen(c.coltype, c.extended_id, c.collength)::INTEGER, c.colno: :INTEGER, informix.schema_nullable(c.coltype)::VARCHAR(3), NULL::VARCHAR(128), NULL::VARCHAR(128), NULL::VARCHAR(128), NULL::smallint, informix.schema_isautoincr (c.coltype)::VARCHAR(3), c.extended_id::INTEGER FROM informix.systables st, informix.syssyntable s, informix.systables t, 外部 informix.sysdefaults d, informix.syscolumns c WHERE st.tabid = s .tabid AND s.btabid = t.tabid AND t.tabid = c.tabid AND d.tabid = t.tabid AND c.colno = d.colno AND (st.tabtype in ('P', 'S')) AND (d.class in ('T')) AND st.tabname LIKE '%' AND st.owner LIKE 'informix' AND c.colname LIKE '% ' 按 1,2,16 排序
【问题讨论】:
-
我相信 Informix DBA 应该可以帮助您。可能是环境超载或这些表中缺少统计信息...