FAQ
Tengo una tabla 'mailing' donde guardo direcciones de email,
posteriormente desde esa tabla se envia un newsletter a todos los mail
contenidos.
hasta aca esta todo bien

por otro lado, para agregar las direcciones de mail al listado, hay un
script que lee un archivo plano de texto, del cual extrae todas las
direcciones de mail validas y las agrega a la table 'mailing' .

para no agregar direcciones de mail repetidas, lo que hago antes de insertar
una nueva direccion de mail es verificar que dicho email no exista en la
tabla, lo que en algunos caso produce un time-out . probe con
set_time_limit(0) pero aun asi el script se corta.

el punto es que si la table tiene 5000 direcciones de mail cargadas, e
intento cargar 1000 direcciones nuevas, se produciran 5000 x 1000
comparaciones, es decir 5000 comparaciones por cada nueva direccion de mail
que se intenta insertar.



la consulta es, si alguien conoce alguna manera de optimizar este proceso?


Walter David Funk
Departamento de Programación e Investigación
NetcomProject.com
-----------------------------------------
Buenos Aires - AR

Search Discussions

  • Andres Ferrando at Mar 28, 2003 at 6:50 pm
    declará el campo como "unique", o hacelo directamente primary key, y la
    BD se encargará de eso ...
    Tengo una tabla 'mailing' donde guardo direcciones de email,
    posteriormente desde esa tabla se envia un newsletter a todos los mail
    contenidos.
    hasta aca esta todo bien

    por otro lado, para agregar las direcciones de mail al listado, hay un
    script que lee un archivo plano de texto, del cual extrae todas las
    direcciones de mail validas y las agrega a la table 'mailing' .

    para no agregar direcciones de mail repetidas, lo que hago antes de insertar
    una nueva direccion de mail es verificar que dicho email no exista en la
    tabla, lo que en algunos caso produce un time-out . probe con
    set_time_limit(0) pero aun asi el script se corta.

    el punto es que si la table tiene 5000 direcciones de mail cargadas, e
    intento cargar 1000 direcciones nuevas, se produciran 5000 x 1000
    comparaciones, es decir 5000 comparaciones por cada nueva direccion de mail
    que se intenta insertar.



    la consulta es, si alguien conoce alguna manera de optimizar este proceso?
    --
    Andres Ferrando <anferr@mecon.gov.ar>
  • Walter D. Funk at Mar 28, 2003 at 7:46 pm
    Gracias!

    funciono como esperaba


    ----- Original Message -----
    From: "Andres Ferrando" <anferr@mecon.gov.ar>
    To: <lista@phpes.com>
    Sent: Friday, March 28, 2003 3:56 PM
    Subject: Re: [PHP-ES] Consulta sobre performance


    declará el campo como "unique", o hacelo directamente primary key, y la
    BD se encargará de eso ...
    Tengo una tabla 'mailing' donde guardo direcciones de email,
    posteriormente desde esa tabla se envia un newsletter a todos los mail
    contenidos.
    hasta aca esta todo bien
  • Pablo E. Siciliano at Mar 28, 2003 at 7:56 pm
    ¿Instalar mySql?

    Otra puede ser ordenar el archivo y hacer una busqueda binaria: Guardas la
    cantidad de mails como primer linea, y comparás contra el primero. Si el
    tuyo es mayor al primero, comparás con el último. Si es menor al ultimo,
    comparás con el que esta justo en la mitad. Si es menor, comparás con el que
    esta en la posición 1/4 de la lista, si no, con la que esta 3/4. Seguís
    dividiendo hasta que encuentres donde va.

    En 5000 mails, deverías hacer no mas de 10 divisiones , 10 fseek, y 10
    comparaciones. Lo que no se es que tanto tiempo tarda el fseek, pero supongo
    que vale la pena probar.

    ----- Original Message -----
    From: "Walter D. Funk" <walter@netcomproject.com>
    To: <lista@phpes.com>
    Sent: Friday, March 28, 2003 3:55 PM
    Subject: [PHP-ES] Consulta sobre performance

    Tengo una tabla 'mailing' donde guardo direcciones de email,
    posteriormente desde esa tabla se envia un newsletter a todos los mail
    contenidos.
    hasta aca esta todo bien

    por otro lado, para agregar las direcciones de mail al listado, hay un
    script que lee un archivo plano de texto, del cual extrae todas las
    direcciones de mail validas y las agrega a la table 'mailing' .

    para no agregar direcciones de mail repetidas, lo que hago antes de insertar
    una nueva direccion de mail es verificar que dicho email no exista en la
    tabla, lo que en algunos caso produce un time-out . probe con
    set_time_limit(0) pero aun asi el script se corta.

    el punto es que si la table tiene 5000 direcciones de mail cargadas, e
    intento cargar 1000 direcciones nuevas, se produciran 5000 x 1000
    comparaciones, es decir 5000 comparaciones por cada nueva direccion de mail
    que se intenta insertar.



    la consulta es, si alguien conoce alguna manera de optimizar este proceso?


    Walter David Funk
    Departamento de Programación e Investigación
    NetcomProject.com
    -----------------------------------------
    Buenos Aires - AR



    ---------------------------------------------------------------------
    Archivo On-line: http://www.phpes.com/
    via news: news://news.phpes.com/
    Manual PHP en español: http://www.php.net/manual/es/
    Para dar de baja la suscripción, mande un mensaje a:
    lista-unsubscribe@phpes.com

    ---
    Outgoing mail is certified Virus Free.
    Checked by AVG anti-virus system (http://www.grisoft.com).
    Version: 6.0.463 / Virus Database: 262 - Release Date: 17/03/03
  • Pablo E. Siciliano at Mar 28, 2003 at 8:31 pm
    Perdoná, leí a las apuradas tu mail anterior.

    ----- Original Message -----
    From: "Pablo E. Siciliano" <psiciliano@puentenet.com>
    To: <lista@phpes.com>
    Sent: Friday, March 28, 2003 5:11 PM
    Subject: Re: [PHP-ES] Consulta sobre performance

    ¿Instalar mySql?

    Otra puede ser ordenar el archivo y hacer una busqueda binaria: Guardas la
    cantidad de mails como primer linea, y comparás contra el primero. Si el
    tuyo es mayor al primero, comparás con el último. Si es menor al ultimo,
    comparás con el que esta justo en la mitad. Si es menor, comparás con el que
    esta en la posición 1/4 de la lista, si no, con la que esta 3/4. Seguís
    dividiendo hasta que encuentres donde va.

    En 5000 mails, deverías hacer no mas de 10 divisiones , 10 fseek, y 10
    comparaciones. Lo que no se es que tanto tiempo tarda el fseek, pero supongo
    que vale la pena probar.

    ---
    Outgoing mail is certified Virus Free.
    Checked by AVG anti-virus system (http://www.grisoft.com).
    Version: 6.0.463 / Virus Database: 262 - Release Date: 17/03/03
  • Walter D. Funk at Mar 28, 2003 at 8:46 pm
    Lo voy a probar me parece una opcion interesante, igual momentaneamente lo
    solucione con lo que me dijo Andres
    gracias

    PD: interesante para probarlo el Martes ... ya no me da la cabeza mas


    ----- Original Message -----
    From: "Pablo E. Siciliano" <psiciliano@puentenet.com>
    To: <lista@phpes.com>
    Sent: Friday, March 28, 2003 5:11 PM
    Subject: Re: [PHP-ES] Consulta sobre performance

    ¿Instalar mySql?

    Otra puede ser ordenar el archivo y hacer una busqueda binaria: Guardas la
    cantidad de mails como primer linea, y comparás contra el primero. Si el
    tuyo es mayor al primero, comparás con el último. Si es menor al ultimo,
    comparás con el que esta justo en la mitad. Si es menor, comparás con el que
    esta en la posición 1/4 de la lista, si no, con la que esta 3/4. Seguís
    dividiendo hasta que encuentres donde va.

    En 5000 mails, deverías hacer no mas de 10 divisiones , 10 fseek, y 10
    comparaciones. Lo que no se es que tanto tiempo tarda el fseek, pero supongo
    que vale la pena probar.

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
groupphp-general-es @
categoriesphp
postedMar 28, '03 at 6:46p
activeMar 28, '03 at 8:46p
posts6
users3
websitephp.net

People

Translate

site design / logo © 2022 Grokbase