Acabo de tener la idea de escribir una función en MySQL que pueda pasar una subconsulta para que muestre la representación JSON de esa subconsulta.¿Es posible escribir una función SQL que emita JSON?
Tengo un montón de datos que a menudo obtengo de MySQL, luego los convierto en JSON para la salida API. ¿Podría ser un aumento de velocidad escribir una función MySQL para hacer esto en el servidor SQL que simplemente devuelve el JSON?
Mi imaginación:
query('SELECT * FROM people');
// Output:
// +----+--------+-----+
// | id | name | Age |
// +----+--------+-----+
// | 1 | Molly | 24 |
// | 2 | Edward | 28 |
// +----+--------+-----+
query('JSON(SELECT * FROM people)');
// Output:
// [{"id":1,"name":"Molly","Age":24},{"id":2,"name":"Edward","Age":28}]
Posible? Si es así, ¿hay alguna pista sobre cómo puedo comenzar?
Es posible, pero difícilmente será un aumento de velocidad. Además, para grandes conjuntos de resultados, puede alcanzar ciertos límites como 'group_concat_max_len' y' max_allowed_packet', lo que evitaría que se devuelva el valor. No siempre son posibles cambiar en alojamientos compartidos, etc. – Quassnoi
No estoy seguro de cómo los datos se envían generalmente desde MySQL a un cliente como respuesta a una consulta. ¿Esto quizás reduciría el ancho de banda si el host MySQL no fuera local? – Hubro
El protocolo binario de 'MySQL' es más denso que el' JSON' basado en caracteres. Además, puedes comprimirlo con 'MYSQL_CLIENT_COMPRESS' (en caso de que lo necesites). – Quassnoi