Mysql
 sql >> база данни >  >> RDS >> Mysql

Голям брой колони, избирането на всички отнема завинаги

InnoDB съхранява "широки" таблици по различен начин. Вместо да има всички колони заедно в един низ (плюс допълнителни разходи, като дължини и т.н.), той прави следното:

  • Ако сборът на всички колони за даден ред надвишава около 8 KB, това ще премести част от данните в друга („незаписана“) област за съхранение.
  • Кои колони се преместват без запис зависи от размерите на колоните и т.н.
  • Подробностите зависят от ROW_FORMAT избран.
  • „Незаписан“ е друг блок (или блокове) от 16 KB.
  • По-късно, когато правите SELECT * (или поне извличане на незаписаните колони), трябва да направи друго извличане на диск.

Какво да правя?

  • Преосмислете наличието на толкова много колони.
  • Помислете за „вертикално разделяне“, при което имате друга таблица(и), която съдържа избран TEXT колони. Предложете да изберете групи от колони въз основа на моделите за достъп в приложението си.
  • За колони, които обикновено са доста дълги, обмислете компресирането им в клиента и съхраняването им в BLOB вместо TEXT . Повечето "текстове" се свиват 3:1. Петната се изпращат незаписани по същия начин като текстовите съобщения, но тези компресирани петна биха били по-малки, следователно е по-малко вероятно да се разлеят.
  • Извършете повече обработка в SQL -- за да избегнете връщането на всички редове или за да избегнете връщането на пълния текст и т.н. Когато сляпо изхвърляте много текст на клиент, мрежата и клиентът се превръщат във важен фактор за изминалото време, не само SELECT , себе си.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да добавя първичен ключ за автоматично увеличение въз основа на реда на колоната?

  2. Как да получа типа данни за колоните на таблицата mysql?

  3. mysql_fetch_assoc():предоставеният аргумент не е валиден ресурс за MySQL резултат в php

  4. MySQL управление на потребителите

  5. Как да получите време от db в зависимост от условията