П О Р Т А Л                            
С Е Т Е В Ы Х                          
П Р О Е К Т О В                        
  
Поиск по сайту:
                                                 
Главная

О проекте

Web-мастеру
     HTML & JavaScript
     SSI
     Perl
     PHP
     XML & XSLT
     Unix Shell

MySQL

Безопасность

Хостинг

Другое








Самое читаемое:

Учебник PHP - "Для Чайника".
Просмотров 180391 раз(а).

Иллюстрированный самоучитель по созданию сайтов.
Просмотров 78708 раз(а).

Учебник HTML.
Просмотров 75678 раз(а).

Руководство по PHP5.
Просмотров 46694 раз(а).

Хостинг через призму DNS.
Просмотров 54158 раз(а).

Подборка текстов стандартных документов.
Просмотров 46606 раз(а).

Учебник PHP - Самоучитель
Просмотров 52790 раз(а).

Документация на MySQL (учебник & справочное руководство)
Просмотров 53396 раз(а).

Внешние атаки...
Просмотров 43176 раз(а).

Учебник PHP.
Просмотров 38720 раз(а).

SSI в примерах.
Просмотров 28640 раз(а).



 
 
| Добавить в избранное | Сделать стартовой | Помощь





Администрирование пакета MySQL

Оптимизация запросов

Какая оптимизация выполняется для условия WHERE?

  • Удаление скобок (все ненужные скобки удаляются)
    ((a AND b) AND c OR (((a AND b) AND (c AND d)) -> (a AND b) OR (a AND b AND c AND d)
  • Выполняется свертывание констант
    (a < b AND b=c) AND a=5 -> b > 5 AND b=5
  • Удаление проверки условий в выражении с константами (необходимо из-за свертывания констант).
    (b>=5 AND b=5) OR (b = 6 and 5 = 5) or (B=7 and 5 = 6) -> = B=5 or B=6
  • Если выбор невозможен, возвращаются пустые строки.
  • Поиск всех ключей, которые могут использоваться. Используется тот ключ, который находит меньше записей. Этот ключ используется в следующих выражениях:
    =, >, >= <, <=, BETWEEN и LIKE с префиксом символа 'something%'
  • Удаляются ключи, которые не охватывают все уровни 'AND' и key_parts для которых не полностью определены требования key_parts.
      key = 1 or A = 10                         -> NULL (Нельзя использовать ключ)
      key = 1 or A = 10 and key=2               -> key = 1 OR key = 2
      key_part_1 = const and key_part_3 = const -> key_part_1 = const
    
  • Читаются все константы в таблице

    Постоянные таблицы:

    1. Таблица всего с одной записью.
    2. Таблица, которая использует только другие константы из таблиц и константы на полном уникальном ключе.
    const_table.key = constant
    
    const_table.key_part_1 = const_table2.field and
    const_table.key_part_2 = constant
    
  • Находится лучшая комбинация присоединений для соединения таблиц (увы, методом перебора :-( )
  • Для каждой таблицы используется, если возможно, линейный ключ для чтения записей. Каждый индекс таблицы опрашивается на предмет существования там ключа, который охватывает < 30% записей. Если такой ключ там найдется, то он используется, иначе используется быстрое сканирование таблицы.
  • Перед выводом каждой записи, пропускаются те, которые соответствуют предложению HAVING.

Оптимизация памяти, используемой таблицами

Есть несколько вещей, которые Вы можете сделать, чтобы минимизировать количество места, которое используют ваши таблицы. Прежде всего используйте НЕ ПУСТОЙ указатель всякий раз, когда возможно. Это ускорит запросы, и сохранит 1 бит на поле.

Вы можете сохранить много места, используя меньшие целочисленные переменные. Например, MEDIUMINT часто вполне достаточен.

Вообще Вы должны выбрать самый маленький тип данных, в котором Вы будете нуждаться, если есть проблемы с памятью.

Имейте в виду, что поля фиксированной длины в mysql обрабатываются значительно быстрее. Избегая полей переменной длины (VARCHAR, BLOBs), можно повысить эффективность на 10-200%.

Назад | Вперед
Содержание (общее) | Содержание раздела



Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:
 





Copyright © 2005-2016 Project.Net.Ru