Choisir dans MySQL entre le type ENUM et une table externe avec une jointure

La plupart des utilisateurs ne connaissent pas ou peu les avantages et les inconvénients du Type ENUM proposé par la base de données MySQL. Résultat:  par peur de l’inconnu, les développeurs n’utilisent tout simplement pas cette fonctionnalité qui permet pourtant une amélioration significative des performances (dans certains cas)  sans  perdre en simplicité. Opposé à la contrainte CHECK connu par nos amis ORACLE, son utilisation et son fonctionnement est très différent, et ces 2 fonctionnalités ne font tout simplement pas la même chose. Cet article devrait vous permettre de savoir dans quel cas il est intéressant d’utiliser le type ENUM, et surtout dans quel cas ne pas utiliser le type ENUM.

Lire la suite

Performance de la fonction SQL batchUpdate de Spring

Cette semaine, j’ai du mettre à jour un batch d’import de données d’un fichier plat dans une base de données. L’optimisation de ce script n’ayant jamais été une priorité, le batch importait environ 60000 lignes et prenait entre 15 et 20 minutes. En quelques ajustement, j’ai réussit à importer plusieurs centaines milliers de lignes en à peine quelques minutes. Aussi étonnant que cela puisse paraître, l’optimisation d’un tel script ne nécessite pas de connaissances particulières ni même de mettre en place une solution de multi-threading utilisant les ordinateurs de la NASA ou ceux de Google. Tout est proposé de manière native au sein de la librairie JDBC (depuis la version 2) et permet le traitement par lot des requêtes SQL . Par conséquent, toute les solutions reposant sur cette API de connexion à un base de donnée peuvent également utiliser cette fonctionnalité, que ce soit JdbcTemplate pour Spring ou encore Hibernate.

Lire la suite