У меня есть следующий SQL, который я пытаюсь выполнить в Sybase.В SQL Server эти типы запросов являются стандартными, но производительность делает их непригодными для использования в Sybase.
DECLARE
@pMEME_FIRST_NAME char(100),
@pMEME_LAST_NAME char(100)
SET @pMEME_FIRST_NAME = 'Lisa'
SET @pMEME_LAST_NAME = 'Spivey'
SELECT TOP 1 CMC_MEME_MEMBER.MEME_FIRST_NAME,
CMC_MEME_MEMBER.MEME_LAST_NAME,
CMC_MEME_MEMBER.MEME_SEX,
CMC_MEME_MEMBER.MEME_SFX,
CMC_SBSB_SUBSC.SBSB_ID,
CMC_MEME_MEMBER.MEME_REL,
CMC_SBAD_ADDR.SBAD_ADDR1,
CMC_SBAD_ADDR.SBAD_ADDR2,
CMC_SBAD_ADDR.SBAD_CITY,
CMC_SBAD_ADDR.SBAD_STATE,
CMC_SBAD_ADDR.SBAD_ZIP,
CMC_GRGR_GROUP.GRGR_ID,
CMC_GRGR_GROUP.GRGR_NAME,
CMC_MEME_MEMBER.MEME_SSN,
CMC_MEME_MEMBER.MEME_BIRTH_DT,
CMC_MEME_MEMBER.MEME_CK,
CMC_MEME_MEMBER.SBSB_CK,
CMC_MEME_MEMBER.GRGR_CK,
CMC_MEME_MEMBER.MEME_FAM_LINK_ID
FROM CMC_MEME_MEMBER CMC_MEME_MEMBER
INNER JOIN CMC_SBSB_SUBSC CMC_SBSB_SUBSC
ON CMC_MEME_MEMBER.SBSB_CK = CMC_SBSB_SUBSC.SBSB_CK
AND CMC_MEME_MEMBER.GRGR_CK = CMC_SBSB_SUBSC.GRGR_CK
INNER JOIN CMC_SBAD_ADDR CMC_SBAD_ADDR
ON CMC_MEME_MEMBER.SBSB_CK = CMC_SBAD_ADDR.SBSB_CK
AND CMC_MEME_MEMBER.GRGR_CK = CMC_SBAD_ADDR.GRGR_CK
INNER JOIN CMC_GRGR_GROUP CMC_GRGR_GROUP
ON CMC_MEME_MEMBER.GRGR_CK = CMC_GRGR_GROUP.GRGR_CK
WHERE (@pMEME_FIRST_NAME IS NULL OR (CMC_MEME_MEMBER.MEME_FIRST_NAME = @pMEME_FIRST_NAME))
AND (@pMEME_LAST_NAME IS NULL OR (CMC_MEME_MEMBER.MEME_LAST_NAME = @pMEME_LAST_NAME))
-- WHERE ((CMC_MEME_MEMBER.MEME_FIRST_NAME = @pMEME_FIRST_NAME))
-- AND ((CMC_MEME_MEMBER.MEME_LAST_NAME = @pMEME_LAST_NAME))
Если я выполняю одну из проверок IS NULL, запрос выполняется в миллисекундах.
Есть идеи?