NexusDB :查询执行失败:临时存储管理器中的操作系统错误: Espace sur le disque($70/112) 2B27/11047美元
我不明白这个信息。真正的问题是什么?
查询代码:
SELECT d.Code, c.RaisonSociale, c.EMail, m.Article, m.Quantite, m.TotalTTC, m.NumeroTicket
FROM C_Client c, C_Mouvement m, C_Depot d, C_Article a, C_Ticket t
WHERE c.Ident = m.RefClient
AND m.Article = a.Code
AND t.DateFacture BETWEEN :dateDebut AND :dateFin发布于 2015-11-13 00:45:19
“临时存储管理器”负责存储脏块,如果缓冲区管理器已达到允许的最大内存量,并且必须将块从内存中清除。
"Espace insuffisant le disque“是一条操作系统错误消息,我猜这句话的意思是”磁盘已经满了“。这意味着TSM用于存储的磁盘已满。
可能是因为您的查询产生的结果集非常庞大,超出了可用内存和磁盘空间。
如果您查看您的查询,这并不奇怪:
FROM
C_Client c,
C_Mouvement m,
C_Depot d,
C_Article a,
C_Ticket t
WHERE
c.Ident = m.RefClient AND
m.Article = a.Code AND
t.DateFacture BETWEEN :dateDebut AND :dateFin您正在连接5个表,但您只定义了其中3个表(c、m和a)之间的联接条件,这将与其他两个表生成一个完全不受限制的交叉连接。如果我们仅假设每个(c、m和a)、d和t都有1000条记录,那么已经有了1,000,000,000条记录结果集。
这就是为什么您使用的join语法已经被SQL标准废弃了20多年的原因之一。如果您试图使用当前语法编写查询,问题很快就会变得很明显:
FROM
C_Client AS c
INNER JOIN
C_Mouvement AS m ON c.Ident = m.RefClient
INNER JOIN
C_Article AS a ON m.Article = a.Code
INNER JOIN
C_Depot AS d ON --???
INNER JOIN
C_Ticket AS t ON --???
WHERE
t.DateFacture BETWEEN :dateDebut AND :dateFinhttps://stackoverflow.com/questions/33669668
复制相似问题