Ho una tabella con 11 milioni di righe in un database MySQL. Una delle colonne è un numero di identificazione personale. Le persone sono elencate numerose volte nella tabella e voglio sapere quanti numeri di identificazione personale ci sono. E quindi creare una tabella di quei numeri univoci. Quando conto i numeri identificativi personali distinti da una colonna, ottengo un numero diverso rispetto a quando li inserisco direttamente in una tabella. Ad esempio:Il conteggio (distinto nome_col) è diverso dal conteggio delle righe di una query distinta selezionata?
select count(distinct person_key) from big_table;
mi dà un conteggio di 4.074.890.
Poi, quando cerco di creare un tavolo con loro,
insert into new_table select distinct person_key from big_table;
Si crea solo 2,701,875 righe.
(Inoltre, se uso la query: select count(1) from (select distinct person_key from big_table) temp;
mi dà 2.701.875.)
Tutte le idee che sto facendo male?
Può essere diverso ma solo da 1. Poiché il conteggio di 'colonna distinta' esclude nullo ma il conteggio delle righe lo include. Quindi non chiaro cosa sta succedendo lì. –
Non riesco nemmeno a pensare a qualcosa che possa causare una così grande disparità. Il problema 'NULL' dovrebbe effettivamente causare che' SELECT DISTINCT' sia 1 * più grande * di 'SELECT COUNT (DISTINCT)'. – Barmar
Sospetto che ci sia qualche danno all'indice per 'person_key', prova a riparare la tabella. – Barmar