sql >> データベース >  >> RDS >> Mysql

MySQLクエリ-最適化

    SELECT COUNT(DISTINCT u.id) AS COUNT_QUES FROM urls u
    INNER JOIN logs l
    ON u.id=l.url_id
    WHERE u.url NOT IN (SELECT A.url FROM 
    (SELECT * FROM urls u
    WHERE SUBSTR(u.url,1,3)!='www')A,
    (SELECT * FROM urls v
    WHERE SUBSTR(v.url,1,3)='www')B
    WHERE A.url=SUBSTR(B.url,5,LENGTH(B.url))
    ) 
    AND l.group_type BETWEEN 4 AND 6
    AND u.id NOT IN
    (SELECT DISTINCT u.id FROM urls u
    INNER JOIN logs l
    ON u.id=l.url_id
    WHERE u.url NOT IN (SELECT A.url FROM 
    (SELECT * FROM urls u
    WHERE SUBSTR(u.url,1,3)!='www')A,
    (SELECT * FROM urls v
    WHERE SUBSTR(v.url,1,3)='www')B
    WHERE A.url=SUBSTR(B.url,5,LENGTH(B.url))
    ) 
    AND l.group_type < 4
    )
    

    または

    SELECT COUNT(DISTINCT CASE WHEN B.URL_ID IS NOT NULL AND FLAG1 = 1 AND FLAG2 = 0 THEN TRIM(LEADING 'www.' FROM A.URL) END)
    FROM URLS A 
    LEFT JOIN (SELECT URL_ID,
               MAX(CASE WHEN GROUP_TYPE BETWEEN 4 AND 6 THEN 1 ELSE 0 END) FLAG1,
               MAX(CASE WHEN GROUP_TYPE < 4 THEN 1 ELSE 0 END) FLAG2
               FROM LOGS
               GROUP BY URL_ID) B
               ON A.ID = B.URL_ID
    

    これがうまくいくことを願っています。SQLFIDDLEでこれを確認してください- http://sqlfiddle.com/#! 2 / 1fde2 / 39



    1. mysqlステートメントを検証するための正規表現の使用

    2. C++およびmysqlの動的mysqlクエリを送信する方法

    3. MySQLデータベースでのトリガーの操作-チュートリアル

    4. LaravelでwhereHasを使用しているときに、サブクエリからSUMを選択します