Welcome to Sign in | Help

Nelamuriri cu IN

  •  09-17-2008, 12:48 PM

    Nelamuriri cu IN

    CREATE TABLE A (ID_A int, Nume varchar(50))

    CREATE TABLE B (ID_B int, ID_A int, Nume varchar(50))

    GO

    INSERT INTO A VALUES(1, 'Test1')

    INSERT INTO A VALUES(2, 'Test1')

    INSERT INTO A VALUES(3, 'Test1')

    INSERT INTO A VALUES(4, 'Test1')

     

    INSERT INTO B VALUES (1, 1, 'TestB1')

    INSERT INTO B VALUES (2, 2, 'TestB1')

    INSERT INTO B VALUES (3, 2, 'TestB1')

    INSERT INTO B VALUES (4, 1, 'TestB1')

    INSERT INTO B VALUES (5, 3, 'TestB1')

    INSERT INTO B VALUES (6, 2, 'TestB1')

    INSERT INTO B VALUES (7, 4, 'TestB1')

    INSERT INTO B VALUES (8, 1, 'TestB1')

    INSERT INTO B VALUES (9, 2, 'TestB1')

    INSERT INTO B VALUES (10, 3, 'TestB1')

    INSERT INTO B VALUES (11, 1, 'TestB1')

    INSERT INTO B VALUES (12, 4, 'TestB1')

    INSERT INTO B VALUES (13, 2, 'TestB1')

    INSERT INTO B VALUES (14, 2, 'TestB1')

    INSERT INTO B VALUES (15, 1, 'TestB1')

    INSERT INTO B VALUES (16, 1, 'TestB1')

    INSERT INTO B VALUES (17, 4, 'TestB1')

    INSERT INTO B VALUES (18, 3, 'TestB1')

    INSERT INTO B VALUES (19, 3, 'TestB1')

    INSERT INTO B VALUES (20, 1, 'TestB1')

    GO

    SELECT B.Nume, A.Nume FROM B JOIN A ON B.ID_A = A.ID_A WHERE A.ID_A IN (1, 3)

     

    Daca va uitati la planul de executie la SELECT o sa vedeti ca pe tabela A face predicatul ID_A = 1 OR ID_A = 3, iar pe tabela B face ID_A >= 1 AND ID_A <= 3. Nu inteleg de ce face range la tabela B, de ce nu e acelasi predicat ca si la A. Daca trimit o lista de id-uri la o procedura si fac cu IN, tabela B va avea de suferit enorm. Stie cineva vreo explicatie?

View Complete Thread
Powered by Community Server (Commercial Edition), by Telligent Systems