Някои отговори:
-
20 милиона реда са в рамките на възможностите на MySQL. Работя върху база данни, която има над 500 милиона реда в една от таблиците. Преструктурирането на таблица може да отнеме часове, но обикновените заявки не са проблем, стига да са подпомогнати от индекс.
-
Вашият лаптоп е доста остарял и с недостатъчна мощност, за да се използва като сървър на база данни от голям мащаб. Преструктурирането на таблицата ще отнеме много време. Малкото количество памет и обикновено бавен диск на лаптоп вероятно ви ограничават. Вероятно използвате и настройките по подразбиране за MySQL, които са проектирани да работят на много стари компютри.
-
Не бих препоръчал използването на
TEXT
тип данни за всеки колона. Няма причина да се нуждаете отTEXT
за повечето от тези колони. -
Не създавайте индекс за всяка колона, особено ако настоявате да използвате
TEXT
типове данни. Не можете дори да индексиратеTEXT
колона, освен ако не дефинирате индекс на префикс . Като цяло, изберете индекси, които да поддържат конкретни заявки.
Вероятно имате много други въпроси въз основа на горното, но има твърде много за покриване в една публикация на StackOverflow. Може да искате да преминете обучение или да прочетете книга, ако ще работите с бази данни.
Препоръчвам Високопроизводителен MySQL, 2-ро издание
.
Повторете вашите последващи въпроси:
За настройката на MySQL ето едно добро място за начало:http://www.mysqlperformanceblog.com/2006/09/29/what-to-tune-in-mysql-server-after-installation/
Много операции ALTER TABLE причиняват преструктуриране на таблицата, което означава основно заключване на таблицата, правене на копие на цялата таблица с приложените промени и след това преименуване на новата и старата таблица и премахване на старата таблица. Ако масата е много голяма, това може да отнеме много време.
Тип данни TEXT може да съхранява до 64KB, което е излишно за телефонен номер или състояние. Бих използвал CHAR(10) за типичен телефонен номер в САЩ. Бих използвал CHAR(2) за американски щат. Като цяло използвайте най-компактния и пестелив тип данни, който поддържа диапазона от данни, от които се нуждаете в дадена колона.