Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Оптимизация БД
 
 автор: Arfey   (07.02.2009 в 22:31)   письмо автору
 
 

Судя по многочисленным топикам, для ускарения работы БД неоходимо проводить индексацию отдельных полей
Что имеется ввиду под этим и на основании какой логики индексируются конкретные поля?

Если я правильно понял - просто тупо берем поля которые наиболее часто встречаются в запросах и посредством того же phphMyAdmin ставим индекс на эти поля.


Еще вопрос
В чем разница между этим

Имя ключа           Тип         Количество элементов           Действие                   Поле 
nameservis       INDEX            4                       Уничтожить  Правка            name  
                                                                                       servis  

и этим

Имя ключа          Тип         Количество элементов           Действие                   Поле 
name             INDEX            4                       Уничтожить  Правка           name  
servis           INDEX            4                        Уничтожить  Правка          servis 

  Ответить  
 
 автор: а-я   (08.02.2009 в 07:34)   письмо автору
 
   для: Arfey   (07.02.2009 в 22:31)
 

Я конечно не ас в этом!
Но примерно это так:

1)
Индексация служит, чтоб быстро отсеять большую часть ненужных данных.
И дает плюсы только для SELECT.
Все подряд нельзя индексировать, т.к. чем больше ставим ключей, тем дольше будет вставка и обновление.
индексируют поля, которые указываются в условиях WHERE, ON.

Допустим, имеем таблицу юзеров.
И нам надо узнать сколько в Москве парней.

1.вариант
WHERE `sex`='M' AND `city`='Moskow'
Чтоб ускорить поиск мы ставим индекс на поле sex.
Это плохой вариант, т.к. с помощью ключа мы отсеяли примерно 50%
Если девушек и парней одинаковое число. А еще надо по городу отсеять.

Поэтому надо указывать
WHERE `city`='Moskow' AND `sex`='M'
И индекс ставить на city, конечно при условии, что у Вас в БД не 50% москвичей

Короче, просто надо найти более точное условие, и от него отталкиваться.

А так же не забываем использовать EXPLAIN, чтоб узнать какие индексы будет мускул использовать. Если не по Вашему плану, то направить его.


2)


<?
// В 1ом варианте можно понять как ассоц. массив ключей
$name = array(
=> array(0,1,2,3),
=> array(0,1,2,3,4)
);
// ключ работает – WHERE `name`=$name AND `servis`=$servis
// и не работает для - WHERE `servis`=$servis AND `name`=$name 



// Во 2ом варианте отдельно ключи
$name  =  array(0,1,2,3);
$servis  =  array(0,1,2,3,4);
// оба ключа работают при любых условиях
?>

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования