« MySQL/Manipulation de données » : différence entre les versions

Contenu supprimé Contenu ajouté
Ligne 96 :
TRUNCATE [TABLE] `table1`
</source>
 
Quelques précisions :
* Utiliser <code>DELETE</code> sans clause <code>WHERE</code>, supprime tous les enregistrements.
* Si une table contient beaucoup d'index, on peut agrandir le cache pour accélérer les <code>DELETE</code> (variable <code>key_buffer_size</code>).
* ForPour indexed MyISAMles tables indexées MyISAM, inparfois some<code>DELETE</code> casesest DELETEsplus arerapide fasteren ifspécifiant youle specify themot <code>QUICK keyword</code> (<code>DELETE QUICK FROM</code> ...). ThisCela ispermet onlyde usefulréutiliser forles tablesvaleurs where DELETEddes index values will be reusedeffacées.
* <code>TRUNCATE/<code> efface également les lignes rapidement, en faisant <code>DROP</code> et <code>CREATE</code> (sur certains moteurs de stockage seulement).
* TRUNCATE will delete all rows quickly by DROPping and reCREATE-ing the table (not all Storage Engines support this operation).
* <code>TRUNCATE</code> isne notgarantit pas la transaction-safe norou le lock-safeverrouillage.
* <code>DELETE</code> informe de combien de lignes ont été supprimées, mais pas <code>TRUNCATE</code>.
* DELETE informs you how many rows have been removed, but TRUNCATE doesn't.
* AfterAprès DELETingune manysuppression rowsmassive (aboutau moins 30 % des lignes), anil convient de lancer <code>OPTIMIZE TABLE</code> commandjuste shouldaprès makepour nextaccélérer statementsla fastersuite.
* ForSur ades tables InnoDB tableavec withcontraintes <code>FOREIGN KEYs constraintsKEY</code>, <code>TRUNCATE</code> se behavescomporte likecomme <code>DELETE</code>.
<source lang=sql>
DELETE FROM `antiques`
Ligne 110 ⟶ 112 :
LIMIT 1
</source>
Il est possible de classer les lignes avant leur suppression, tout en en choisissant le nombre.
You can order the rows before deleting them, and then delete only a given number of rows.
 
== Références ==