Mam tabelę z 11 milionami wierszy w bazie danych MySQL. Jedna z kolumn to osobisty numer identyfikacyjny. Ludzie są wymienieni wiele razy w tabeli i chcę wiedzieć, ile jest unikalnych osobistych numerów identyfikacyjnych. A następnie utwórz tabelę tych unikalnych liczb. Po zliczeniu odrębnych osobistych numerów identyfikacyjnych z kolumny otrzymuję inną liczbę niż wtedy, gdy wstawiam je bezpośrednio do tabeli. Na przykład:Czy liczba (odrębna nazwa_kolumny) różni się od zliczania wierszy selekcji odrębnego zapytania?
select count(distinct person_key) from big_table;
daje mi liczbę 4,074,890.
Wtedy, gdy próbuję utworzyć tabelę z nimi,
insert into new_table select distinct person_key from big_table;
to tylko tworzy 2,701,875 wierszy.
(Również, jeśli mogę użyć zapytania: select count(1) from (select distinct person_key from big_table) temp;
daje mi 2701875).
Wszelkie pomysły, co robię źle?
Może być różny, ale tylko o 1. Ponieważ zliczanie "odrębnej kolumny" wyklucza wiersz zerowy, ale zliczanie obejmuje go. Więc nie wiadomo, co się tam dzieje. –
Nie mogę też myśleć o niczym, co spowodowałoby tak dużą rozbieżność. Problem 'NULL' powinien w rzeczywistości spowodować, że' SELECT DISTINCT' będzie 1 * większy * niż 'SELECT COUNT (DISTINCT)'. – Barmar
Podejrzewam, że w indeksie znajduje się pewne uszkodzenie dla 'person_key', spróbuj naprawić tabelę. – Barmar