【发布时间】:2015-07-05 15:34:11
【问题描述】:
下面是我的查询的样子
SELECT * FROM (SELECT * FROM table1 t1 WHERE col3='abc')
INNER JOIN table2 t2 ON t1.col1=t2.col1
INNER JOIN table3 t3 ON t2.col1=t3.col1
table1、table2、table3中所有列的数据类型都是varchar。
我假设在执行查询时,首先将 table1 存储在内存中,然后根据条件进行连接操作。
当 table1 存储在内存中时,列的数据类型是否仍然与表定义中的相同?因为如果数据类型改变了加入条件,它可能会抛出一些错误。
我的这个查询实际上是一个视图,我收到以下错误。 1. 在其上运行 RUNSTATS 时:
该实用程序无法生成统计信息。错误“-420”是 返回.. SQLCODE=-2310, SQLSTATE= , DRIVER=3.61.75
- 在运行此查询时不使用其视图名称(我的意思是直接运行查询) [jcc][t4][1026][11213][3.61.75] 由于内部 JCC 错误而引发的错误检查异常。请联系支持。
消息文本:服务器发生错误。严重性代码 8。无异常 从服务器返回的代码。 ERRORCODE=-4228, SQLSTATE=null
- 在运行查询时
SELECT * from view;
在函数的字符串参数中发现无效字符 "DECFLOAT".. SQLCODE=-420, SQLSTATE=22018, DRIVER=3.61.75
我正在使用 db2 LUW 9.5
【问题讨论】:
-
试试这个:(SELECT * FROM table1 t1 WHERE col3='abc') t1
-
这可能是一个愚蠢的问题,但您是否检查过函数 DECFLOAT 是否存在字符串参数中的无效字符?
-
您不能假设“...首先 table1 将存储在内存中...”。 SQL 优化器决定实际的执行顺序。
-
@ChristianBarron 我没有在任何地方使用过任何 DECFLOAT 函数