Domanda Viste MySQL e uso dell'indice


Stavo pensando di iniziare a utilizzare le visualizzazioni per ridurre la complessità del codice e delle query nel nostro progetto - alcune di esse hanno alcuni join, e da quello che capisco, le visualizzazioni MySQL ci consentirebbero di fare riferimento a quei dati un po 'più facilmente in più punti .

C'è un sacco di roba in giro, dove "MySQL non usa indici per le viste", "Non puoi avere una vista indicizzata", "Solo se usi MERGE" ... Non c'è una risposta chiara.

Quindi, per tagliare al sodo: Le viste MySQL utilizzano gli indici sui tavoli da cui sono costruiti? È una cattiva idea utilizzare le visualizzazioni perché le prestazioni saranno pessime o utilizzeranno gli indici delle tabelle sottostanti quando eseguiranno i suoi join? Se ordino una vista per una colonna che è indicizzata nella tabella, continua a essere ordinata così velocemente come normalmente?

Fare la mia ricerca sembra indicare che i punti di vista non usano gli indici, ma se questo fosse il caso nessuno li userebbe mai; ovviamente le persone lo fanno, quindi ...?

Scusa se questo sembra un po 'assurdo.


29
2017-10-27 21:31


origine


risposte:


Se si interroga una vista, MySQL volere considera l'utilizzo di indici nelle tabelle sottostanti.

Comunque è non possibile aggiungere un nuovo indice a una colonna calcolata nella vista. Penso che questo sia quello che le persone intendevano per MySQL non avere viste indicizzate, al contrario di (per esempio) Viste indicizzate di SQL Server.


29
2017-10-27 21:34



Le viste MySQL usano gli indici sulle tabelle da cui sono costruiti?

Sì.

A cosa si riferiscono probabilmente le persone quando dicono MySQL doesn't use indexes for views è di qualcosa chiamato materialized views o indexed views su cui la vista effettiva è fisicamente archiviata nel file system come sarebbe la tabella normale. Gli indici possono essere creati per queste viste su alcuni DBMS come Oracle o SQL Server. Essenzialmente, indexed views diventare una copia delle tabelle originali che lo compongono e lo è kept in sync automatically, tipo di parlare.

Leggi questo articolo riguardo Viste indicizzate su SQL Server, per esempio.


15
2017-10-27 21:35