Torna indietro   Hardware Upgrade Forum > Software > Programmazione

WoW Forever: la beta è stato uno dei momenti più alti della storia dei videogiochi, e non si ripeterà
WoW Forever: la beta è stato uno dei momenti più alti della storia dei videogiochi, e non si ripeterà
Un mondo affollato e vivo, personaggi destinati a sparire a fine test e nessuno a inseguire l'oggetto giusto. Beta e stress test di World of Warcraft: Forever hanno fatto emergere un roleplay spontaneo, tra danze a Goldshire e code ordinate ai PNG
Oracle AI World 2026: in Europa prima la sovranità, poi la sicurezza e solo dopo l'IA
Oracle AI World 2026: in Europa prima la sovranità, poi la sicurezza e solo dopo l'IA
In tre giorni a Las Vegas Oracle ha presentato agenti che eseguono il lavoro, l'alleanza con OpenAI e un cloud aperto agli acceleratori di tutti. Ma i clienti europei chiedono garanzie prima ancora delle funzionalità
DS N°7 E-Tense: il SUV premium made in Melfi che punta su autonomia e comfort
DS N°7 E-Tense: il SUV premium made in Melfi che punta su autonomia e comfort
Fino a 740 km WLTP con la batteria da 97,2 kWh, sospensioni che leggono la strada con una telecamera e un abitacolo da salotto parigino. La nuova DS N°7 raccoglie l'eredità della DS 7 e la porta, per la prima volta, nel mondo 100% elettrico. Ecco come è fatta, cosa offre e quanto costa.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 12-01-2010, 19:35   #1
CercoAiutoo
Member
 
Iscritto dal: Jul 2009
Messaggi: 125
[database] Tabella con Milioni di righe e ForeignKey

Ho una tabella "libri" con i campi "Titolo" e "Descrizione" che ha 4 milioni di righe.


Per evitare di interrogare una tabella di 4 milioni di righe ho pensato di dividerla per argomento ( 20 tabelle da circa 200mila righe ( libro_giallo, libro_horror, ecc )).

Nella tabella "lettori" quindi pensavo di inserire i seguenti campi:

nome_lettore ( varchar )
libro_argomento ( int )
libro_id ( int )


Quindi invece della ForeignKey, uso degli integer "libro_argomento" ( che mi permette di accedere alla opportuna tabella ) e "libro_id" ( che mi permettere di accedere al libro della tabella specificata in "libro_argomento" ).


Dite che è una buona soluzione NON usare i ForeignKey ed evitare di interrogare sempre una tabella da 4 milioni di righe ?
CercoAiutoo è offline   Rispondi citando il messaggio o parte di esso
Old 12-01-2010, 21:35   #2
Mixmar
Senior Member
 
L'Avatar di Mixmar
 
Iscritto dal: Feb 2002
Città: Trento
Messaggi: 962
Non sono un grande esperto di database, quindi un paio di considerazioni niente affatto specifiche:
  1. L'aumento di efficienza della tua soluzione (20 tabelle più piccole anzichè una sola) si basa sull'ipotesi che lo stesso lettore tenda a preferire libri dello stesso genere: troppi lettori "onnivori" ti costringerebbero a interrogare comunque l'unione di tutte le tabelle che hai creato.
  2. E' vero, non utilizzare la clausola di integrità referenziale probabilmente velocizza le operazioni del database, ma rallenterà il tuo software perchè devi implementarla "a mano" (che succede, se elimini un libro dall'elenco, ai record collegati)? Anche qui, spero che tu abbia controllato che i costi non superino i benefici. Ovviamente, il costo di una JOIN, con o senza la Foreign Key, è identico: anzi, tu devi prima fare un test per individuare la tabella dei libri su cui eseguire la query.
  3. Per una questione di nomi, magari chiamerei la seconda tabella "letture" e non "lettori", in quanto in effetti ogni riga identifica un libro letto da una certa persona, non un (solo) lettore specifico.
__________________
"Et Eärallo Endorenna utúlien. Sinome maruvan ar Hildinyar tenn' Ambar-metta!" -- Aragorn Elessar, Heir of Isildur
Mixmar -- OpenSuSE 11.1 on AMD 64 3000+ on DFI LanParty nF4-D | GeForce 6600 GT + Thermaltake Schooner on Samsung 710N
Storage -- ( 2 x Hitachi Deskstar 80 Gb + 1 x Hitachi 250 Gb ) = 1 RAID 5 + 1 Storage space LaCie Ethernet Disk Mini 250 Gb | HP - DV2150 EL MILAN CLAN
Mixmar è offline   Rispondi citando il messaggio o parte di esso
Old 12-01-2010, 21:38   #3
wizard1993
Senior Member
 
L'Avatar di wizard1993
 
Iscritto dal: Apr 2006
Messaggi: 22462
inoltre a mio avviso, un database un minimo ottimizzato, eventualmente creando un semplice indice sul capo argomento, crea automaticamente una struttura come quella da te descritta dietro le quinte
__________________
amd a64x2 4400+ sk939;asus a8n-sli; 2x1gb ddr400; x850 crossfire; 2 x western digital abys 320gb|| asus g1
Se striscia fulmina, se svolazza l'ammazza
wizard1993 è offline   Rispondi citando il messaggio o parte di esso
Old 12-01-2010, 21:50   #4
CercoAiutoo
Member
 
Iscritto dal: Jul 2009
Messaggi: 125
Scusate ho dimenticato di dire che su questa/e tabella/e verrà fatta un solo tipo di query tramite ajax con un campo di autocompletamento come Google Suggest.
La query è questa:

Codice:
SELECT * FROM libri WHERE libro_titolo LIKE '.$q.'% LIMIT 100

Inoltre volevo dire che uso già l' indice sul campo libro_titolo e la tabella libri non verrà MAI modificata ( niente inserimenti e niente cancellazioni ne ora ne mai se non mooolto raramente ).


.

Ultima modifica di CercoAiutoo : 12-01-2010 alle 22:03.
CercoAiutoo è offline   Rispondi citando il messaggio o parte di esso
Old 13-01-2010, 07:56   #5
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
L'integrità referenziale appesantisce le operazioni di insert, update e delete, ma non quelle di select, per cui puoi benissimo utilizzarla ed evitare di usare 20 tabelle diverse che, a mio avviso, non risolvono il tuo problema.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 13-01-2010, 09:57   #6
shinya
Senior Member
 
L'Avatar di shinya
 
Iscritto dal: Jul 2005
Città: Bologna
Messaggi: 1130
Quote:
Originariamente inviato da CercoAiutoo Guarda i messaggi
Scusate ho dimenticato di dire che su questa/e tabella/e verrà fatta un solo tipo di query tramite ajax con un campo di autocompletamento come Google Suggest.
La query è questa:

Codice:
SELECT * FROM libri WHERE libro_titolo LIKE '.$q.'% LIMIT 100
.
Non vedo l'ora di cercare il mio libro preferito: "foobar'; drop table libri; --"

4 milioni di righe non mi sembrano tantissime, se accedi per indice... ma la query è effettivamente lenta o è una tua supposizione?
shinya è offline   Rispondi citando il messaggio o parte di esso
Old 13-01-2010, 12:54   #7
CercoAiutoo
Member
 
Iscritto dal: Jul 2009
Messaggi: 125
La query non so se è lenta... la sto provando sul mio computer e phpmyadmin mi dice che ci impiega 0.0010 secondi circa

Ultima modifica di CercoAiutoo : 13-01-2010 alle 12:59.
CercoAiutoo è offline   Rispondi citando il messaggio o parte di esso
Old 13-01-2010, 13:42   #8
marco.r
Senior Member
 
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
Quote:
Originariamente inviato da shinya Guarda i messaggi
Non vedo l'ora di cercare il mio libro preferito: "foobar'; drop table libri; --"
Mi ricorda qualcosa ...



Quote:
4 milioni di righe non mi sembrano tantissime, se accedi per indice... ma la query è effettivamente lenta o è una tua supposizione?
Infatti non dovrebbe essere molto lenta, una ottimizzazione del genere aspetterei di avere dei dati dai dei test sotto carico.
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele
marco.r è offline   Rispondi citando il messaggio o parte di esso
Old 13-01-2010, 14:37   #9
shinya
Senior Member
 
L'Avatar di shinya
 
Iscritto dal: Jul 2005
Città: Bologna
Messaggi: 1130
Quote:
Originariamente inviato da marco.r Guarda i messaggi
Mi ricorda qualcosa ...
Eh si infatti, mitico Little Bobby Tables!
shinya è offline   Rispondi citando il messaggio o parte di esso
Old 13-01-2010, 17:24   #10
wizard1993
Senior Member
 
L'Avatar di wizard1993
 
Iscritto dal: Apr 2006
Messaggi: 22462
scusate l'ot
ma queste strisce dove le trovate?
__________________
amd a64x2 4400+ sk939;asus a8n-sli; 2x1gb ddr400; x850 crossfire; 2 x western digital abys 320gb|| asus g1
Se striscia fulmina, se svolazza l'ammazza
wizard1993 è offline   Rispondi citando il messaggio o parte di esso
Old 13-01-2010, 17:50   #11
shinya
Senior Member
 
L'Avatar di shinya
 
Iscritto dal: Jul 2005
Città: Bologna
Messaggi: 1130
Quote:
Originariamente inviato da wizard1993 Guarda i messaggi
scusate l'ot
ma queste strisce dove le trovate?
http://xkcd.com/
shinya è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


WoW Forever: la beta è stato uno dei momenti più alti della storia dei videogiochi, e non si ripeterà WoW Forever: la beta è stato uno dei mome...
Oracle AI World 2026: in Europa prima la sovranità, poi la sicurezza e solo dopo l'IA Oracle AI World 2026: in Europa prima la sovrani...
DS N°7 E-Tense: il SUV premium made in Melfi che punta su autonomia e comfort DS N°7 E-Tense: il SUV premium made in Melfi...
Recensione Samsung Galaxy Tab S12 Ultra: non chiamatelo tablet... è molto di più Recensione Samsung Galaxy Tab S12 Ultra: non chi...
Hyundai IONIQ 5 N, l'elettrica che finge di essere termica (e ci riesce da paura) Hyundai IONIQ 5 N, l'elettrica che finge di esse...
La Cina si prepara al primo lancio orbit...
Sale LAN, la Manovra 2027 introduce una ...
11 prezzi imperdibili in Amazon: non sol...
Giù i prezzi di Xiaomi 17T e Xiao...
Una tassa di 5,5 centesimi su ogni gigab...
Vuoi clonare un videogioco con l'IA? Cla...
Furto da 6,3 miliardi di dollari, Binanc...
Gli USA dipendono dai robot stranieri: T...
Volkswagen non ha più soldi per l...
Telescopio spaziale Hubble: la NASA cerc...
Più sottile e potente: le nuove i...
Il JPL estende la vita operativa della s...
DAZN Full è in offerta: tutta la ...
GTA 6 su PC potrebbe arrivare prima del ...
Da zero al tracciato in secondi: LibreCo...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 18:31.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v