Ver Mensaje Individual
  #18 (permalink)  
Antiguo 08/07/2013, 20:14
Avatar de guardarmicorreo
guardarmicorreo
 
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 11 años, 5 meses
Puntos: 84
Respuesta: insertar 10.000 campos a una tabla, como?

Cita:
Iniciado por HackmanC Ver Mensaje




Técnicamente la mejor forma es guardar los 10,000 registros en la base de datos. Tanto sea que el sistema genere el número al azar como que la persona pueda seleccionar el número de forma manual. La situación es la siguiente,

1. El sistema genera el número de forma automática.

El sistema genera un número de entre los números que queden libres, es decir, expresado en terminos pseudo SQL: "SELECT numero WHERE comprado = FALSE ORDER BY RAND() LIMIT 1". Así consecutivamente hasta que el usuario se decida por el número que desea comprar. El hecho es que solamente se le va a mostrar una opción entre los que no han sido comprados. Imagina si dice 8,586 y yo selecciono "comprar" y el sistema me dice "no puede comprar ese número porque ya fue comprado". Mi respuesta sería "¿entonces para que me lo ofrece?".

2. El usuario selecciona un número manualmente.

El usuario ingresa un número manualmente y el sistema busca entre los 10,000 si ese ya fue comprado. Si ya fue comprado pues tendrá que optar por otro número y así sucesivamente hasta que el número seleccionado sea válido. Imágina que están vendidos 9,999 números, ¿cuantas veces tendría que probar para pegarle al único que hace falta? El sistema debería mostrar los números válidos y poder seleccionarlos de una lista o algo parecido, ya sea cuando falten pocos números o siempre.

En cualquiera de los dos casos, una base de datos con un índice en el campo 'número' y en el campo 'comprado' será sumamente eficiente con 10,000 números solamente, aunque la demanda de números sea muy alta, por supuesto el programa deberá optimizar las consultas para hacer uso eficiente de los índices y no realizar mas consultas de las necesarias.



Exactamente, básicamente tendría que utilizar la respuesta anterior,



Pseudocódigo:

Código PHP:
Ver original
  1. for($i = 1; $i <= 10000; $i++) {
  2.     mysqli_query($connection, "insert into tabla1 (número, comprado) values ($i, false)");
  3. }

Saludos
era solo darle una idea fundamental de que ingresar los 10000 números es totalmente erróneo.

fíjate en lo que te puse en negrita.

no es necesario ofrecer números ya comprados, simplemente ofrece los números que queden libres:

genera un número aleatorio, si existe en la base de datos genera otro y así sucesivamente hasta que encuentre un número libre ofreciendo varios números y el usuario solo lo tiene que comprar.

por otro lado, muchas personas prefieren escoger directamente su número, cuantas veces tenga que probar es problema del usuario no de los números ya comprados ni del programador.

en un caso u otro solo tiene que comprobar que un número ya fué comprado o no, de la otra manera constantemente tendrá que trabajar con 10000 números hasta que el usuario escoja en una lista paginada su número eso es realmente ineficiente ¿no crees?