sql >> Database teknologi >  >> RDS >> Mysql

Hvad betyder det, når jeg siger Forberedt erklæring er prækompileret?

Når du bruger forberedt sætning (dvs. præ-kompileret sætning), så snart DB får denne sætning, kompilerer den den og cacher den, så den kan bruge den sidste kompilerede sætning til successive kald af samme sætning. Så det bliver prækompileret til successive opkald.

Du bruger generelt forberedt sætning med bindevariabler, hvor du angiver variablerne under kørsel. Hvad der nu sker for successiv udførelse af forberedte udsagn, kan du give de variabler, der er forskellige fra tidligere opkald. Fra DB synspunkt behøver den ikke at kompilere sætningen hver gang, den vil blot indsætte bind-variablerne ved rum-tid. Så bliver hurtigere.

Andre fordele ved udarbejdede erklæringer er:-

1)beskyttelse mod SQL-injektionsangreb

2) Hurtigere for successive opkald af samme udsagn

Sådan fungerer det :-

  1. Prækompilering udføres af databasen. Nogle enklere databaser prækompilerer slet ikke udsagn. Andre kan prækompilere det på prepareStatement-kaldet, og atter andre gør det, når execute først kaldes på sætningen, idet der tages højde for værdier af parametrene, når de kompilerer (opretter en plan for) sætningen.

  2. Databaser, der prækompilerer sætninger, cachelagrer dem normalt, så ps1 vil efter al sandsynlighed ikke blive kompileret igen. Nogle JDBC-drivere (f.eks. Oracles) cachelagrede endda sætninger, så de har faktisk ikke lukket det, da ps.close() blev kaldt.

  3. Databaser cacher generelt erklæringer, indtil noget fjerner dem fra cachen.

For detaljer gå gennem denne wiki link



  1. Hvorfor er PHP PDO DSN et andet format for MySQL versus PostgreSQL?

  2. MariaDB JSON_QUERY() Forklaret

  3. SQLite JSON_ARRAY_LENGTH()

  4. MySQL POW() Funktion – Hæv en værdi til kraften af ​​en anden værdi