JSON suppose utf8, donc est incompatible avec les images à moins qu'elles ne soient encodées d'une manière ou d'une autre.
Base64 est presque exactement 8/6 fois plus volumineux que le binaire (BLOB). On pourrait dire qu'il est facilement abordable. 3000 bytes
devient environ 4000 bytes
.
Tout le monde devrait être capable d'accepter des codes 8 bits arbitraires, mais pas tout le monde. Base-64 peut être le compromis le plus simple et le meilleur pour ne pas avoir à gérer des données 8 bits.
Puisqu'ils sont "petits", je les stockerais dans une table, pas dans un fichier. Je les stockerais cependant dans une table séparée et JOIN
par un id
approprié quand vous en avez besoin. Cela permet aux requêtes qui n'ont pas besoin de l'image de s'exécuter plus rapidement car elles n'enjambent pas les BLOBs.
Techniquement, TEXT CHARACTER SET ascii COLLATE ascii_bin
ferait l'affaire, mais BLOB
indique plus clairement qu'il n'y a pas vraiment de texte utilisable dans la colonne.