2011-10-28 17 views
8

Próbuję zoptymalizować moją bazę danych. Aby to zrobić, muszę być w stanie określić najdłuższy wpis danych w kolumnie varchar, a następnie przyciąć definicję kolumny nieco powyżej.MySQL Określanie najdłuższej długości VarChar

Jak mogę się dowiedzieć, używając sql, długości najdłuższego wpisu varchar w moim stole?

CREATE TABLE `poller_output` (
    `local_data_id` mediumint(8) unsigned NOT NULL DEFAULT '0', 
    `rrd_name` varchar(19) NOT NULL DEFAULT '', 
    `time` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', 
    `output` varchar(200) NOT NULL DEFAULT '', 
    PRIMARY KEY (`local_data_id`,`rrd_name`,`time`) 
) ENGINE=MEMORY DEFAULT CHARSET=utf8 

Odpowiedz

18

Jeśli chcesz wiedzieć, długość maks pola output, na przykład, można użyć tej kwerendy:

SELECT Max(CHAR_LENGTH(`output`)) AS Max FROM `poller_output` 
+0

Idealne ... dokładnie to, czego szukasz. – Jericon

+0

ty za pomocną odpowiedź; Proponuję, aby wszyscy zobaczyli także post hudonów – user2426679

8

Można to zrobić za pomocą następującego komunikatu

SELECT column_name FROM database.table PROCEDURE ANALYSE(1,1); 

Wartość Max_length wyników z tego daje najdłuższy varchar w tej kolumnie.

Więc w tym przypadku zakładając chcesz zbadać kolumnę wyjściową następnie można uruchomić następujące

SELECT output FROM poller_output PROCEDURE ANALYSE(1,1); 

Zaletą tego rozwiązania jest to, że będzie to również daje optymalne FieldType w wartości zwrotnych, które będą coś podążając za liniami

+2

+1 - Myślę, że jest to lepsza odpowiedź w kwestii optymalizacji bazy danych. Daje ci znacznie więcej niż tylko długość. – Fenton

-3

Zarówno tykanie, jak i funkcja char_length w odpowiedzi Aurelio powodują błędy. This odpowiedź działa.

0

będę pisać odpowiedź w pytaniu zrobiłem:

SELECT CHARACTER_MAXIMUM_LENGTH 
FROM information_schema.COLUMNS 
WHERE TABLE_SCHEMA = 'Database' 
    AND TABLE_NAME = 'Table' 
    AND COLUMN_NAME = 'Field' 
Powiązane problemy