Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di gasmor
    Registrato dal
    Apr 2004
    Messaggi
    1,768

    [MySql] alleggerire una query

    e già, mi trovo costretto a dover alleggerire una query, non so spiegare in che senso, so solo che in locale funziona mentre on-line no, se ci sono troppi record, si blocca tutto.

    Attenzione, non va in timeout, si blocca proprio!

    questa è la query:

    SELECT referrer.titolo, referrer.chiavi, COUNT(visita.id) AS tot , visita.referrer FROM `referrer` LEFT JOIN `visita` ON visita.referrer=referrer.id WHERE visita.esterno=1 AND date_format( visita.ora , '%Y-%m-%d' ) = '2006-11-29' GROUP BY referrer.titolo ORDER BY tot DESC

    qualche idea su come semplificare l'operazione? Magari con più query

    non so cosa fare perchè non capisco quale possa essere il problema, credo comunque che sia una sorta di limitazione dell'host che devo, quindi, raggirare...
    Hai provato a creare un sito con Jaaxo Cms PHP5? new!

  2. #2
    Utente di HTML.it L'avatar di gasmor
    Registrato dal
    Apr 2004
    Messaggi
    1,768
    riesco a fare una query del genere:

    SELECT COUNT(id) AS tot , referrer FROM `visita` WHERE visita.esterno=1 AND date_format( visita.ora , '%Y-%m-%d' ) = '2006-11-30' GROUP BY referrer ORDER BY tot DESC

    solo che poi dovrei fare una query per ogni "visita.referrer" e potrebbero essere anche 20.000...

    oppure avevo pensato di salvare tutta la tabella referrer in un array e poi stampare ciò che mi serve, ma potrei avere un array con 1.000.000 di elementi.

    Hai provato a creare un sito con Jaaxo Cms PHP5? new!

  3. #3
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    1) visita.referrer ha un indice?
    2) referrer.id ha un indice? (suppongo di sì!!)
    3) perché usi un date_format nella where? toglilo e indicizza anche il campo ora

  4. #4
    Utente di HTML.it L'avatar di gasmor
    Registrato dal
    Apr 2004
    Messaggi
    1,768
    Originariamente inviato da luca200
    1) visita.referrer ha un indice?
    2) referrer.id ha un indice? (suppongo di sì!!)
    3) perché usi un date_format nella where? toglilo e indicizza anche il campo ora
    1 e 2) si, cioè?

    3) perchè mi servono solo i campi che hanno come data il 2006-11-30

    non ho capito perchè hai detto di toglierlo e di indicizzare il campo ora
    Hai provato a creare un sito con Jaaxo Cms PHP5? new!

  5. #5
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Originariamente inviato da gasmor
    1 e 2) si, cioè?
    Cioè cosa??

    Originariamente inviato da gasmor
    3) perchè mi servono solo i campi che hanno come data il 2006-11-30
    Non è un buon motivo per usare una funzione di formattazione su una where. Se il campo è un datetime usa DATE(campo)='2006-11-30'

    Originariamente inviato da gasmor
    non ho capito perchè hai detto di toglierlo e di indicizzare il campo ora
    Non volevi "alleggerire" la query??

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.