Ho un sito in stile video on demand che ospita serie di video in diversi moduli . Tuttavia, con il modo in cui ho progettato il database, si sta dimostrando molto lento. Ho già fatto questa domanda e qualcuno ha suggerito l'indicizzazione, ma non riesco a capirlo. Ma vorrei che qualcuno aiutasse con la struttura del database qui per vedere se può essere migliorato. La tabella principale è Video:
ID bigint(20) (primary key, auto-increment)
pID text
airdate text
title text
subject mediumtext
url mediumtext
mID int(11)
vID int(11)
sID int(11)
pID è una stringa di 5 cifre unica per ogni video che è un identificatore stenografico. Airdate è il TS, (memorizzato in formato testo, proprio lì forse dovrei cambiarlo in TIMESTAMP AUTO UPDATE), il titolo è auto esplicativo, il soggetto è autoesplicativo, url è l'hard link sul sito al video, il mID è unito a un'altra tabella per il titolo del modulo, vID è unito a un'altra tabella per la lingua del video, (inglese, russo, ecc.) e sID è il riepilogo del modulo, un paragrafo memorizzato in un database esterno.
La parte più lenta del sito Web è la parte relativa alla registrazione. Conservo i dati in un'altra tabella chiamata 'Hits':
id mediumint(10) (primary key, auto-increment)
progID text
ts int(10)
Di nuovo, qui (questo è stato fatto un po 'di tempo fa) ma il mio Timestamp (ts) è un INT invece di ON UPDATE CURRENT TIMESTAMP, che suppongo dovrebbe essere. Tuttavia questa tabella ora ha una lunghezza di 47.492 righe e lo script che ho scritto per elaborarlo è molto lento, quindi lento nel tempo. Una riga viene aggiunta a questa tabella ogni volta che un utente fa clic su "Riproduci" sul sito Web e quindi il progID è uguale al pID e registra la data / ora di php time () in ts
.
Fondamentalmente carico l'intero database di 'Hits' in un array e conto i colpi in ogni giorno usando la colonna TS. Sto indovinando (sono abbastanza lento a tutto questo, ma non avevo idea che questo sarebbe accaduto quando ho costruito la cosa) che questo è probabilmente il modo peggiore per farlo.
Quindi le mie domande sono le seguenti:
- C'è un modo migliore per strutturare la tabella "Video", è così, cosa suggerisci?
- Esiste un modo migliore per strutturare gli "hit", in tal caso, per favore aiutami / dimmi!
O è il fatto che le mie tabelle stiano bene e la codifica PHP sia schifosa?