我在我的应用程序的一部分中使用了这个语句,它的生成。 LIKE'%%'是空的,因为没有搜索参数发送给它,所以它拉入所有结果。DB2 SQL技巧/提示
我仍然是整个数据库的新手,并想知道是否有任何提示改善我的声明?
我相信它看起来很可怕,但请容易对我!
更新:我主要希望从中获得更好的表现。我已经使用过DB2顾问并创建了我应该说的关键字。这帮助了一些,但仍然比我预期的要慢。
谢谢。
SELECT * FROM
(
SELECT rownumber() OVER (ORDER BY pgmajdsc, item) AS ROW_NUM,
line, item, pgmajdsc, manufacturer
FROM
(
SELECT iline AS line, iitem AS item, pgmajdsc, ldesc AS manufacturer
FROM itemmast
LEFT JOIN itemweb on iline=line and iitem=item
JOIN linemst ON iline=lline
LEFT JOIN custord ON opline=iline AND opitem=iitem AND opcust='1234'
LEFT JOIN cartwdtl ON cwline=iline and cwitem=iitem and cwusr='foo' AND cwcust='1234'
LEFT JOIN itematr ON iline=ialine AND iitem=iaitem
LEFT JOIN prodgrp ON iaclass=pgclass
WHERE ico = 01
AND iecomm = 'Y'
AND (UPPER(ITEMDESC) LIKE '%%' OR UPPER(PRODDESC) LIKE '%%' OR
LINE LIKE '%%' OR UPPER(MFGNAME) LIKE '%%' OR ITEM LIKE '%%' OR
PRODNAME LIKE '%%' OR IDESC1 LIKE '%%' OR IDESC2 LIKE '%%' OR
IMFGNO LIKE '%%' OR IITEM LIKE '%%')
) AS TEMP
) AS ROW_NUM
WHERE ROW_NUM BETWEEN 0 AND 25
ORDER BY pgmajdsc, item
除了格式化之外还想改进什么? –
您可以尝试将其分离为不同的行,以便更易读:D – Ruben
@Bead不用说您应该重新格式化此查询,以便它可以被人类以及DB2的解析器解释。除此之外,你需要重新解释这个问题,以便**问**一个具体的问题。目前还不清楚你试图回答什么。 –