¿Sería C / C ++ un buen lenguaje para mi sitio web para seleccionar registros aleatorios del DB y generar los registros?

El problema no es el código de su aplicación o su lenguaje de implementación.

Si va a buscar un millón de grabaciones en el código de su aplicación, la recodificación en C mejorará un poco el rendimiento, pero seguirá siendo un asco y no escalará.

Es mejor hacer la “selección aleatoria” en su base de datos. Sin embargo, incluso allí hay que tener un poco de cuidado. Si utiliza el método “habitual”:

SELECT * FROM MYTAB ORDER BY RAND() LIMIT 1;

harás un escaneo completo de la tabla y una ordenación activa en MYTAB, lo cual es muy malo.

Una mejor manera es algo como lo siguiente:

  • En el código de la aplicación, o en un procedimiento almacenado, genere una CLAVE PRIMARIA correctamente formateada con un valor aleatorio, posiblemente utilizando algunas matemáticas con RAND () y MIN / MAX en la CLAVE PRIMARIA de su tabla. SELECT MIN(PK), MAX(PK) from MYTAB; Es una consulta rápida.
  • Una vez que tenga su CLAVE PRIMARIA aleatoria, úsela para seleccionar un registro.
  • Si generó un PK que no existe, repita hasta obtener uno. Si no hace muchos DELETEs, o sus DELETEs siempre son del registro más antiguo, esto no debería ser un gran problema.
  • Una vez que tenga un registro, envíelo a la aplicación.

La lógica específica para generar un PK y registro aleatorio válido dependerá de la lógica de su negocio, pero lo anterior es un “algoritmo” generalmente decente para hacerlo.

Dudo que el lenguaje de programación sea el problema. Si cambia a C o C ++, su enfoque probablemente seguirá siendo el mismo, al igual que el rendimiento.

Dices que estás usando una base de datos. Deje que la base de datos haga el trabajo.

Aquí hay una publicación de blog que alguien escribió explicando cómo hacer exactamente eso usando algunas bases de datos SQL diferentes:

SQL para seleccionar una fila aleatoria de una tabla de base de datos

Usando un enfoque como ese, seleccionar un registro aleatorio debe ser razonablemente rápido, independientemente del lenguaje de programación que utilice.

Si eso no es lo suficientemente rápido, puede indexar los registros por una ID secuencial y seleccionar una ID aleatoria.

Haga esto en el servidor de la base de datos, no en la aplicación. Transferir 1 millón de registros de una base de datos a una aplicación solo para elegir uno al azar es terriblemente ineficiente.

Cómo hacerlo depende de la estructura de sus datos. Si tiene una columna entera única que aumenta monotónicamente, simplemente elija un número aleatorio en el rango y use ese registro.

No estoy seguro de qué base de datos está utilizando, pero debe pedirle a la base de datos que le proporcione un registro aleatorio utilizando SQL, y dejar que la base de datos se esfuerce por hacer eso:

1) la base de datos probablemente se escribió en C / C ++, y tiene muchos ajustes para mejorar el rendimiento en este tipo de operación

2) Debe elegir una base de datos y crear un diseño de tabla basado en sus requisitos, y esta selección aleatoria es una de ellas. Debe afectar su elección de DB.