SQL-kysely, jossa id =… tai id =… tai id =… jne. [Suljettu]

Suljettu. Tämä kysymys on aiheen ulkopuolella . Se ei tällä hetkellä hyväksy vastauksia.

kommentit

  • Jos lausekkeita on todella 800, mielestäni sinun pitäisi työskennellä sovelluksesi kanssa

Vastaa

Tapa kirjoittaa kysely on:

SELECT * FROM member_copy WHERE id IN (17579, 17580, 17582); 

Todellinen kysymys on kuitenkin, missä tulivatko id -luettelot? Jos id -luettelo on toisen tietokantakyselyn tulos, sinun tulisi tehdä joko alivalinta tai liittyminen.

Kommentit

  • toimi täydellisesti. Se ei ollut tietokantakyselystä, joku todella kävi läpi ja poimi jokaisen numeron. En kadehdi heitä.

Vastaa

Testi EXPLAIN ANALYZE VERBOSE näyttää, että lomake id IN (...) -vastauksessa @ 200_success muunnetaan sisäisesti muotoon:

SELECT * FROM member_copy WHERE id = ANY ("{17579, 17580, 17582}"); 

.. joka sen vuoksi toimii aluksi hieman nopeammin (muuntamista ei tarvita).

Myös kysymyksessä oleva lomake toimii tehokkaasti hyvin samankaltainen.

Suurilla luetteloilla poistetaan matriisi ja sen jälkeen JOIN on yleensä nopeampi :

SELECT m.* FROM unnest("{17579, 17580, 17582}"::int[]) id JOIN member_copy m USING (id); 

Koska luettelo on is the result of another database query, se on nopein yhdistää molemmat yksi kysely JOIN.

Tarkempi selitys:

Vastaus

Yhden tunnuksen osalta seuraava kysely toimi minulle:

SELECT * FROM member_copy WHERE id IN ("17579"); 

Kommentit

  • Voisitko selittää, miten tämä vastaa toimenpidekokonaisuutta?

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *