101 votes

Fonctions cachées de MySQL

J'ai travaillé avec Microsoft SQL Server depuis de nombreuses années mais je n'ai commencé que récemment à utiliser MySQL avec mes applications web, et je suis avide de connaissances.

Pour poursuivre la longue lignée des Questions sur les "fonctions cachées". J'aimerais connaître toutes les fonctions cachées ou pratiques de MySQL, ce qui me permettrait d'améliorer mes connaissances de cette base de données open source.

2voto

Arjan Points 7154

En fait, documenté mais très ennuyeux : les conversions automatiques pour les dates incorrectes et autres entrées incorrectes.

Avant MySQL 5.0.2, MySQL est indulgent envers les valeurs de données illégales ou incorrectes et les contraint à des valeurs légales pour la saisie de données. À partir de la version 5.0.2 de MySQL, cela reste le comportement par défaut, mais vous pouvez modifier le mode SQL du serveur pour choisir un traitement plus traditionnel des mauvaises valeurs, de sorte que le serveur les rejette et abandonne l'instruction dans laquelle elles se trouvent.

En ce qui concerne les dates : parfois, vous aurez la "chance" que MySQL n'ajuste pas les données saisies pour qu'elles soient proches des dates valides, mais qu'il les stocke comme suit 0000-00-00 ce qui, par définition, n'est pas valable. Cependant, même dans ce cas, vous auriez pu vouloir que MySQL échoue plutôt que de stocker silencieusement cette valeur pour vous.

2voto

eugene y Points 37378

Le système intégré Profileur SQL .

1voto

serbaut Points 2351

InnoDB stocke par défaut toutes les tables dans un seul tablespace global qui sera ne rétrécissent jamais .

Vous pouvez utiliser innodb_file_per_table qui placera chaque table dans un tablespace séparé qui sera supprimé lorsque vous abandonnerez la table ou la base de données.

Prévoyez-le, car vous devrez vider et restaurer la base de données pour récupérer de l'espace.

Utilisation des tablespaces par table

1voto

Devid G Points 904

Si vous insérez dans la colonne datetime une chaîne vide avec la valeur "", MySQL conservera la valeur 00/00/0000 00:00:00. Contrairement à Oracle, qui enregistre la valeur nulle.

1voto

Osvaldo M. Points 389

Lors de mes benchmarks avec de grands ensembles de données et des champs DATETIME, cette requête est toujours plus lente :

SELECT * FROM mytable
WHERE date(date_colum) BETWEEN '2011-01-01' AND ''2011-03-03';

que cette approche :

SELECT * FROM mytable
WHERE date_column BETWEEN '2011-01-01 00:00:00' AND '2011-03-03 23:59:59'

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X