Domanda

So che sembra strano, ma a quanto pare uno dei miei articoli è bloccata.

select * from table where type_id = 1 and updated_at < '2010-03-14' limit 1;

select * from table where type_id = 3 and updated_at < '2010-03-14' limit 10;

il primo non avrebbe finito in esecuzione anche in poche ore, mentre il secondo si completa senza problemi. l'unica differenza è la type_id tra le 2 domande.

un po 'di sfondo, la prima dichiarazione avvitato davanti al quale ho dovuto uccidere manualmente.

Grazie in anticipo per il vostro aiuto - Ho un lavoro con dati urgente alla fine, e questo problema mi sta facendo impazzire

È stato utile?

Soluzione

Sembra che non si dispone di un indice su (type_id, updated_at) e il vostro tavolo è piuttosto grande.

La creazione dell'indice dovrebbe risolvere il problema:

CREATE INDEX type_updated_idx ON table (type_id, updated_at);

Supponendo, hai i permessi per fare dichiarazioni di definizione dei dati.

Altri suggerimenti

Hai provato in esecuzione di un ANALYZE TABLE sulla tabella interessata?

Si può prendere in considerazione la conversione verso le tabelle MyISAM, InnoDB come tabelle hanno problemi e restrizioni.

Una colonna non può essere bloccato - ma una gamma indice può. Show innodb status normalmente si dirà dopo di che la vostra transazione attiva è in attesa.

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