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

Форум MySQL

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

 

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

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

тема: по поводу scan базы и индексов
 
 автор: Diablo_   (18.12.2006 в 16:54)   письмо автору
 
 

Добрый день.
Вот мне хостер, прислал письмо, плиз объясните чего он от меня хочет!

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

Пожалуйста, создайте в таблицах индексы на тех полях, по которым
производится выборка записей.

Что значит "индексы" это имеется ввиду цифры, буквы или что? + к этому, я не понимаю, если я допустим пишу Select id, date,time where razdel='1'; он же в любом случае, будет делать скан! Или нет?
Как нужно верно строить структуру?

   
 
 автор: stalk3r   (18.12.2006 в 17:05)   письмо автору
 
   для: Diablo_   (18.12.2006 в 16:54)
 

В программе по упр. БД (обычно phpmyadmin) сделайте индексы полей, там опция такая есть

   
 
 автор: Diablo_   (18.12.2006 в 17:07)   письмо автору
 
   для: stalk3r   (18.12.2006 в 17:05)
 

а можно подробнее?
если вы имеете ввиду INDEX то они везде где нужно, назначены

   
 
 автор: Diablo_   (18.12.2006 в 17:25)   письмо автору
 
   для: Diablo_   (18.12.2006 в 17:07)
 

То есть, если я правельно понял, то INDEX должен быть установлен у тех полей, по котрым идёт выборка в базе?!

   
 
 автор: cheops   (18.12.2006 в 22:51)   письмо автору
 
   для: Diablo_   (18.12.2006 в 16:54)
 

Хостер, вместо того, чтобы думать мозгами и объяснить вам что требуется, хочет чтобы вы научились икусству оптимизации базы данных. Т.е. проиндексировали таблицы таким образом, чтобы полных сканов таблиц не было. В этом случае лучше всего индексировать таблицы и поминутно (проявляя не терпение) спрашивать не стало ли лучше, и если не стало, то как лучше поступить.

Если серьёзно, то индексы действительно хорошо работают для оптимизации выборки. Если у вас в WHERE-условии в основном используется лишь один столбец - индексируйте только его, если два, то создавайте один индекс по двум столбцам, если три - по трём и т.д., пока хостер не успокоится или наоборт... :)))

   
 
 автор: Diablo_   (18.12.2006 в 23:54)   письмо автору
 
   для: cheops   (18.12.2006 в 22:51)
 

Если не сложно, ответьте на пару вопросов:
1. индексировать, нужно только в случае "where", или ещё и в случае order и тд..
2. я заметил, что можно индексировать два и три и более полей! зачем это?

   
 
 автор: cheops   (19.12.2006 в 01:12)   письмо автору
 
   для: Diablo_   (18.12.2006 в 23:54)
 

1. Да можно и order, но это обычно не так актуально, как where-условия
2. Дело в том, что когда у вас двойное условие
WHERE id = 3 AND id_sub = 45

то индекс эффективнее работает, когда он построен на двух столбцамх id и id_sub, если у вас два индекса id и id_sub, то работать скорее всего будет только один из них - id (и то без гарантии). Если у вас имеется индекс по двум столбцам id и id_sub, то при выполнении запроса с WHERE-условием, приведённым выше, такой индекс гарантировано будет использоваться. Никто не мешает создать три индекса, по столбцу id, по столбцу id_sub и по двум столбцам id и id_sub. Однако следует помнить, что каждый индекс замедляет операции вставки, удаления и обновления записей.

   
 
 автор: Diablo_   (19.12.2006 в 01:34)   письмо автору
 
   для: cheops   (19.12.2006 в 01:12)
 

а что нужно писать в поле "Количество элементов" какое количество?

   
 
 автор: cheops   (19.12.2006 в 01:44)   письмо автору
 
   для: Diablo_   (19.12.2006 в 01:34)
 

Это где? Какой клиент используется?

   
 
 автор: Diablo_   (19.12.2006 в 01:54)   письмо автору
 
   для: cheops   (19.12.2006 в 01:44)
 

мускул 4.0
при создании индекса там можно указать кол-во элементов

   
Rambler's Top100
вверх

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