Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra integra un sensore da 1 pollice 8K, ottiche Leica e triplo chip IA. Tra schermo OLED rimovibile, workflow I-Log a 10 bit e stabilizzazione a tre assi, analizziamo le doti tecniche di una gimbal camera pensata per i professionisti
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine porta Logan in un'avventura inedita, violenta e fortemente narrativa, costruita attorno alla sua natura di combattente e al difficile rapporto con il proprio passato. Insomniac Games punta su combattimenti spettacolari, progressione e personalizzazione, inserendo l'azione in un mondo segnato dalla persecuzione dei mutanti. Un viaggio intenso, che alterna mattanza, esplorazione e momenti sorprendentemente emotivi.
DJI Romo 2: tante novità lo rendono un robot completo
DJI Romo 2: tante novità lo rendono un robot completo
Romo 2 è la seconda generazione di robot lavapavimenti di DJI, un modello che si caratterizza per la precisione nel sistema di navigazione e per il funzionamento particolarmente silenzioso. Con le modifiche introdotte in questa seconda versione, e un posizionamento di prezzo più allineato alla concorrenza, rappresenta una valida alternativa sul mercato delle soluzioni di pulizia domestica
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 12-01-2010, 18: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, 20: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, 20: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, 20: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 21:03.
CercoAiutoo è offline   Rispondi citando il messaggio o parte di esso
Old 13-01-2010, 06: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, 08: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, 11: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 11:59.
CercoAiutoo è offline   Rispondi citando il messaggio o parte di esso
Old 13-01-2010, 12: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, 13: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, 16: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, 16: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


Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema Insta360 Luna Ultra: la potenza del sensore da 1...
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa Marvel's Wolverine, la recensione: Logan torna p...
DJI Romo 2: tante novità lo rendono un robot completo DJI Romo 2: tante novità lo rendono un ro...
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED Sony Bravia 9 II: il True RGB alla prova, dove l...
Geely EX5, un mese al volante: il SUV elettrico cinese che ci ha sorpreso (quasi) senza riserve Geely EX5, un mese al volante: il SUV elettrico ...
Intel e SK hynix al tavolo per un'allean...
Osservare la Luna con la NASA, anche in ...
Wallbox per auto elettriche su Amazon: d...
Il mistero della stagione degli uragani ...
La Corte di Cassazione affida i ricorsi ...
Tutti i nuovi prodotti Apple prenotabili...
DDR5, un kit da 598 a 1.215 euro in un m...
Portatile ASUS Vivobook 14 a 837,95€: AM...
Sparita da anni, AppZapper torna nel 202...
Revolut, la truffa dei dati è partita da...
Geely E2: abbiamo visto dal vivo la regi...
HUAWEI Mate XT 2, importarlo dalla Cina ...
Orpheus, la calza smart che usa la music...
La causa antitrust di Musk contro Apple ...
Nitter archiviato e XCancel sospeso tre ...
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: 10:46.


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