Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
sybase中的查询优化_Sybase - Fatal编程技术网

sybase中的查询优化

sybase中的查询优化,sybase,Sybase,我需要从22个客户数据库中检索客户MSISDN(电话号码)。我为两种情况创建了一个视图: 首先,我们需要检查哪个MSISDNs配置文件_id 16240处于非活动状态。这可以通过查询非活动数据不为null的数据库来完成 因为对于GPRS,我们有两个配置文件25054和16240,所以MSISDNs 25054(用于互联网)的e处于活动状态,而16240(用于GPRS未处于活动状态) 所以我们需要为此创建脚本 我准备了一个问题: CREATE VIEW SUBSCR_INFO_VIEW AS SE

我需要从22个客户数据库中检索客户MSISDN(电话号码)。我为两种情况创建了一个视图:

  • 首先,我们需要检查哪个MSISDNs配置文件_id 16240处于非活动状态。这可以通过查询非活动数据不为null的数据库来完成

  • 因为对于GPRS,我们有两个配置文件25054和16240,所以MSISDNs 25054(用于互联网)的e处于活动状态,而16240(用于GPRS未处于活动状态) 所以我们需要为此创建脚本

  • 我准备了一个问题:

    CREATE VIEW SUBSCR_INFO_VIEW AS
    SELECT subscr_no,account_no FROM CUSTOMER_PROFILE_DEF WHERE subscr_no NOT IN
    (SELECT DISTINCT(subscr_no) FROM CUSTOMER_ID_EQUIP_MAP
    WHERE inactive_date Is NOT NULL)
     AND (profile_id IN (16240) AND cutoff_end_dt IS NOT NULL) OR (profile_id IN (25054) AND profile_id NOT IN (16240) AND cutoff_end_dt IS NULL)
    
    SET ROWCOUNT 100 
    
    SELECT DISTINCT(subscr_no) FROM SUBSCR_INFO_VIEW 
    

    这将在所有22个客户服务器中受到影响,从单个客户获取数据需要2.5分钟。我希望缩短这一时间。请让我知道您的反馈。

    如果不了解更多关于数据库结构的信息,这有点难以回答。您在CUSTOMER_PROFILE_DEF和CUSTOMER_ID_Equipment_MAP表中有多少记录,您有哪些密钥?另外,您的SQL在原始帖子中很难理解,我在下面对其进行了重新格式化,并做了一些小改动:

        CREATE VIEW 
            SUBSCR_INFO_VIEW 
        AS SELECT 
            subscr_no,
            account_no 
        FROM 
            CUSTOMER_PROFILE_DEF 
        WHERE 
            subscr_no 
        NOT IN (
                SELECT DISTINCT
                    subscr_no
                FROM 
                    CUSTOMER_ID_EQUIP_MAP 
                WHERE
                    inactive_date Is NOT NULL
            ) 
        AND ((profile_id = 16240 AND cutoff_end_dt IS NOT NULL) 
        OR   (profile_id = 25054 AND cutoff_end_dt IS NULL))
    
        SET ROWCOUNT 100 -- This is just for testing?
    
        SELECT DISTINCT(subscr_no) FROM SUBSCR_INFO_VIEW
    
    sql基本相同,但我将(12345)语句中的
    profile\u id更改为
    profile\u id=12345
    ,因为值列表中只有一个值