Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    problema strano con mysql

    Ragazzi ho un problema strano con mysql

    ho un sito di articoli in diversi linguaggi... ho una struttura del genere: una tabella 'article', una 'category' (raccoglie le categorie di article) e una tabella 'article_linguaggio' per ogni linguaggio (es. article_en, article_it, article_es etc..)

    la tabella article_en raccoglie gli articoli in inglese... article_it ad esempio raccoglie gli stessi articoli tradotti in italiano...

    Ecco le tabelle:

    article (PRIMARY KEY ART_id)
    -----------------------------------------------
    ART_id - ART_url - ART_date


    category (PRIMARY KEY CAT_id)
    -----------------------------------------------
    CAT_id - CAT_url - CAT_title_en - CAT_title_de - CAT_title_es - CAT_title_it


    ad esempio le tabelle 'article_en' e 'article_it' hanno questa struttura:


    article_en (PRIMARY KEY ART_id)
    -----------------------------------------------
    ART_id - ART_title - ART_text

    article_it (PRIMARY KEY ART_id)
    -----------------------------------------------
    ART_id - ART_title - ART_text


    le tabelle di linguaggio (article_en, article_it, article_de etc) sono identiche come struttura. Hanno stesso collation, stesse chiavi primarie (ART_id), son tutte MyIsam etc...

    Il problema è che se faccio questa query per ottenere gli ultimi 10 articoli inseriti in inglese ci impiega circa 2 secondi:

    codice:
    SELECT 
    `article_en`.`ART_title` AS ART_title, 
    SUBSTRING(`article_en`.`ART_text`,1,400) AS ART_summary,
    `article`.`ART_date` AS ART_date,
    `article`.`ART_url` AS ART_url,
    `category`.`CAT_url` AS CAT_url,
    `category`.`CAT_title_en` AS CAT_title
    FROM `article_en`, `article`, `category`
    WHERE `article_en`.`ART_id`=`article`.`ART_id` AND `article`.`CAT_id`=`category`.`CAT_id`
    ORDER BY `article_en`.`ART_id` DESC
    LIMIT 10
    La stessa query per tutti gli altri linguaggi ci impiega molto meno (0.05 secondi circa). Ad esempio per gli ultimi 10 articoli italiani:

    codice:
    SELECT 
    `article_it`.`ART_title` AS ART_title, 
    SUBSTRING(`article_it`.`ART_text`,1,400) AS ART_summary,
    `article`.`ART_date` AS ART_date,
    `article`.`ART_url` AS ART_url,
    `category`.`CAT_url` AS CAT_url,
    `category`.`CAT_title_it` AS CAT_title
    FROM `article_it`, `article`, `category`
    WHERE `article_it`.`ART_id`=`article`.`ART_id` AND `article`.`CAT_id`=`category`.`CAT_id`
    ORDER BY `article_it`.`ART_id` DESC
    LIMIT 10
    Come vedete le due query sono identiche non capisco questa differenza di tempo.. L'unica differenza tra le due tabelle è la dimensione. Avendo circa 60000 record una occupa circa 200 MB (inglese) l'altra circa 100 MB (italiano). Quella italiana occupa meno perchè ha diverse righe con 'ART_title' e 'ART_text' NULL in quanto molti articoli inglesi non sono ancora stati tradotti in italiano. Però tutte e due hanno 60000 record.

    Quindi non penso che la differenza di circa 2 secondi sia imputabile alle diverse dimensioni. Qualcuno può dirmi da cosa dipende e come faccio a risolvere questo problema?

    L'unica cosa che posso pensare è che ci sono problemi nella tabella 'article_en'. Ma se è così come faccio a individuarli e a correggerli? Ho provato a controllare, ottimizzare, riparare la tabella 'article_en' non ho migliorato per nulla i risultati.

    grazie 1000

  2. #2
    nessuno mi aiuta?

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 © 2025 vBulletin Solutions, Inc. All rights reserved.