|
|
|
| Судя по многочисленным топикам, для ускарения работы БД неоходимо проводить индексацию отдельных полей
Что имеется ввиду под этим и на основании какой логики индексируются конкретные поля?
Если я правильно понял - просто тупо берем поля которые наиболее часто встречаются в запросах и посредством того же phphMyAdmin ставим индекс на эти поля.
Еще вопрос
В чем разница между этим
Имя ключа Тип Количество элементов Действие Поле
nameservis INDEX 4 Уничтожить Правка name
servis
|
и этим
Имя ключа Тип Количество элементов Действие Поле
name INDEX 4 Уничтожить Правка name
servis INDEX 4 Уничтожить Правка servis
|
| |
|
|
|
|
|
|
|
для: 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(
0 => array(0,1,2,3),
1 => 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);
// оба ключа работают при любых условиях
?>
|
| |
|
|
|