Domanda

Mi chiedevo se la ricerca istantanea utilizzando jQuery causerebbe un carico enorme su un database (MySQL). So che ci sono un sacco di fattori da considerare, ma per amor di discussione Diciamo che avete 30.000 record a sfogliare?

È stato utile?

Soluzione

indicizzazione

L'indicizzazione aiuta, ma l'indicizzazione rallenta anche INSERT / UPDATE / DELETE ...

MySQL limita anche la quantità di spazio è possibile utilizzare per colonne di indice in una tabella , e dipende dal tipo di motore:

  • MyISAM : 1000 byte
  • InnoDB : 767 bytes

I tipi di dati

Scegli il tipo di dati giusto per il lavoro.
Non molto tempo fa, ho notato che una domanda su SO stava elencando testo come il tipo di dati, ma solo utilizzando ~ 100 caratteri. Hanno riferito di nuovo a dire di aver visto il tempo di query diminuire ad un terzo decimo dell'originale quando hanno cambiato il tipo di dati VARCHAR.

Optimal Query

Si tenga presente che un '*' sinistra di un'espressione SIMILE rende un indice sulla colonna inutile. Se avete bisogno di questo tipo di ricerca, sguardo sfruttando testo ricerca (FTS) utilizzando di MySQL nativo sintassi MATCH .. AGAINST o di supporto 3a parte come Sfinge. E 'difficile offrire un quadro più chiaro senza vedere una query.

Altri suggerimenti

La ricerca attraverso 30.000 record, in qualsiasi database SQL, dovrebbe essere molto veloce se le tabelle sono correttamente indicizzato . È necessario assicurarsi di avere indice utilizzabile (es) per le vostre domande. Si potrebbe anche voler considerare l'utilizzo di Indicizzazione di testo completo .

Beh dipende. Quante più query non l'implementazione di ricerca istantanea generano di un modello di ricerca normale?

La maggior parte librerie javascript che ho visto che fanno questo in realtà non cercare di eseguire la query a meno che il cursore è stato inattivo per un certo tempo. Questi risultato in soli 3 - 4 volte il numero di query come ricerca di pianura. Se si esegue la ricerca veramente su ogni carattere inserito, allora si sta andando ad avere a che fare con il maggior numero di ricerche come personaggi sono di ingresso.

Che tutti detto, dipende interamente da quanto lavoro è coinvolto in una query.

Dipende da come si è creato il database. Indici avrebbe importanza e le colonne selezionate faranno anche. L'ultima cosa che si dovrebbe prendere in considerazione è l'algoritmo di ricerca. Se stai usando solo dove o come clausola di parole chiave di Let Penso che sia andando bene, ma se siete dopo un grande contenuto di allora probabilmente si dovrebbe considerare funzionalità di ricerca full-text di MySQL.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top