Come gentilmente, pacatamente e civilmente richiesto sono a postarvi quanto gentilmente, pacatamente e civilmente richiesto:
DESCRIBE della lista chiamate (cdr_details):
codice:
+-------------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| id_cdr | int(11) | YES | | NULL | |
| dialer | varchar(30) | YES | MUL | NULL | |
| date | date | YES | | NULL | |
| hour | time | YES | | NULL | |
| seconds | int(11) | YES | | NULL | |
| tot_cost | double | YES | | NULL | |
| dialed | varchar(30) | YES | | NULL | |
| type | int(11) | YES | | NULL | |
| destination | varchar(80) | YES | | NULL | |
| cost | double | YES | | NULL | |
+-------------+-------------+------+-----+---------+----------------+
DESCRIBE della lista dei numeri delle utenze (customer_dials)
codice:
+--------------+-------------+------+-----+------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------+-------------+------+-----+------------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| dial | varchar(20) | YES | MUL | NULL | |
| id_customer | int(11) | YES | | NULL | |
| voip | int(11) | YES | | NULL | |
| valid_from | date | YES | | 0000-00-00 | |
| valid_to | date | YES | | 0000-00-00 | |
| id_migration | int(11) | YES | | 0 | |
| naked | int(11) | YES | | 0 | |
+--------------+-------------+------+-----+------------+----------------+
DESCRIBE della lista dei costi delle chiamate (calls_prices)
codice:
+------------+---------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+---------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| id_call | int(11) | YES | MUL | NULL | |
| id_invoice | int(11) | YES | | NULL | |
| price | double | YES | | NULL | |
+------------+---------+------+-----+---------+----------------+
La logica è terribilmente semplice: ad ogni chiamata corrisponde un "id_call" col prezzo e e il "dialer" è il numero chiamante che è uno di quelli in "dial".
Tipo la query che farei per avere la lista del totale dei costi delle chiamate divise per numero e tipologia di direttrice (urbana, interurbana, cellulare ecc.) è la seguente:
codice:
SELECT d.dial,SUM(p.price),c.type FROM customer_dials d,calls_prices p,cdr_details c
WHERE d.dial=c.dialer AND c.id=p.id_call AND
c.date BETWEEN '2011-01-01' AND '2011-01-31' group by d.dial,c.type
e per eseguire ottenendo 1937 righe ha impiegato qualcosa come 33 minuti
Info sulle tabelle:
cdr_details: 855124 righe
customer_dials: 794 righe
calls_prices: 861084
l'unica cosa che vi chiedo nelle eventuali repliche è di risparmiarmi i parenti 
PS: sì lo so, ho detto "dell'ordine dei milioni" e la tabella ne ha solo 850 mila, il fatto è che le chiamate si aggiungono ogni mese e sempre di più (esponenzialmente), quindi comunque ai milioni presto o tardi ci si arriva.