Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

SQL संभवतः प्रदर्शन समस्याओं में नहीं है

आपके पास एक स्तंभ संयोजन है जो अनुक्रमणिका के किसी भी उपयोग को रोकता है

कोशिश करें NOT EXISTS जो 2 कॉलम को अलग से सपोर्ट करेगा

SELECT distinct
     o.casino_id, g.game_id
FROM 
    game g 
    INNER JOIN 
    Bet b ON g.game_id = b.game_id
    INNER JOIN
    CasinoUser u ON b.user_id = u.user_id
    INNER JOIN
    onewalletcasino o  ON u.casino_id = o.casino_id
WHERE 
    game_start between dateadd(mi, -180, getdate()) 
                       and dateadd(mi, -5, getdate())  
    and
    b.[status] <> 'P'
    AND
    NOT EXISTS (SELECT *
           FROM 
              thirdpartysettlecalled   tp
           WHERE 
              tp.[status] = 'Y'
              AND
              tp.casino_id = o.casino_id AND tp.game_id = g.game_id)
ORDER BY
    casino_id 

उसके बाद, अपनी अनुक्रमणिका या पाठ्यक्रम जांचें...

यह EXCEPT का एक अच्छा उपयोग है भी (ORDER BY अंत में UNION की तरह जाता है:@Damien_The_Unbeliever को धन्यवाद)

SELECT distinct
     o.casino_id, g.game_id
FROM 
    game g 
    INNER JOIN 
    Bet b ON g.game_id = b.game_id
    INNER JOIN
    CasinoUser u ON b.user_id = u.user_id
    INNER JOIN
    onewalletcasino o  ON u.casino_id = o.casino_id
WHERE 
    game_start between dateadd(mi, -180, getdate()) 
                       and dateadd(mi, -5, getdate())  
    and
    b.[status] <> 'P'

EXCEPT
SELECT tp.casino_id, tp.game_id
FROM thirdpartysettlecalled   tp
WHERE tp.[status] = 'Y'

ORDER BY
    casino_id



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. अभिलेखों के समूह के बीच समय अंतर प्राप्त करें

  2. SQL सर्वर में लॉक की गई तालिका खोजें

  3. SQL सर्वर में DELETE पास-थ्रू क्वेरी कैसे करें

  4. अधिकतम तिथि के आधार पर विशिष्ट रिकॉर्ड कैसे प्राप्त करें?

  5. SQL सर्वर 2008 स्थापना