Индексы

  • Автор темы Автор темы m2k
  • Дата начала Дата начала

m2k

Новичок
Индексы

есть таблица 23поля(пока 23 в последуюущем возможно расширение) таблица с товарами предположительное кол-во записей около 100.000 по любому полю может производится выборка как по 1 так и по нескольким... так вот я хотел узнать как лучше назначить индексы и какой тип таблицы использовать чтобы всё это работало хотябы со средней скоростью и не грузилось по несколько минут при поиске товара.... вот спасибо за внимание .... если ктонить даст линк на мануал (с примерами жизненными) то буду очень благодарен....
 
ок.
так лучше создать индексы для каждого поля в отдельности если возможен поиск как по каждому в отлельности так и по нескольким полям?
и какой тип таблицы лучше использовать...
 
23+ поля имхо очень много.
это разные характеристики товаров? если да, поищи по форуму. здесь примеров организации хранения атрибутов товаров как собак нерезаных
 
m2k
Тип таблицы - скорее всего MyISAM. Индексы делай в зависимости от того, по каким критериям чаще всего делаешь выборки. Скажем, если очень часто используется выборка по id и цене - уместно будет создать один индекс по этим двум полям. И так далее...
 
Cougar
ты знаешь, чем отличаются индексы по одному полю от составных индексов ?
 
Demiurg
Дык (я так думаю). Иначе бы не советовал.
Хотя, я, наверное, забыл сказать m2k, что составные индексы имеют смысл только тогда, когда в условии WHERE используются все поля индекса (или только первое).
Вроде так?
 
я поэтому и спрашивал если у меня будут запросы где в where стоит либо 1 поле либо несколько... то мне нада делать получается не составные индексы получается а каждому полю свой индекс?
 
m2k
А кто мешает сделать одновременно и индекс по одному полю, и составной?

PS: Спасибо Демиургу. Заставил меня полезть в ман по MySQL. Узнал много полезного :)
 
да мне ничего не мешает) я просто узнаю как лучше будет )) а так я поступлю так как посоветуют профи) а ещё хотел узнать когда при создании таблицы пишеш INDEX(`поле1`,`поле2`...)
то получается что MySql создаёт составной индекс а как сделать чтобы при создании таблицы создавался индекс у каждова поля свой?...
 
[sql]
/*простой индекс*/
CREATE INDEX index_name ON table_name(field1);
/*составной индекс*/
CREATE INDEX index_name ON table_name(field1,field2);
[/sql]

PS: Я не профи, я только учусь :)
 
а если у меня есть запрос вида ...WHERE id='1' AND on='1' AND size='468'...
и есть составной индекс из полей on и size поле on 1ое
а id это примари кей ну как обычно я хотел бы узнать будет ли работать индекс при таком условии точней будет ли он участвовать ?.... вот
 
ответ на твой вопрос может дать explain
Оптимизатор может решить, что индекс можно не использовать.
 
тоесть нету однозначного ответа в зависимости от того как будет быстрей(по мнению оптимизатора) будет использоватся индекс или нет?
 
Для нескольких записей быстрее будет перебор, чем использование индекса.
 
а киньте плиз ссылки где мона почитать или ткните носом туда где можно найти где можно почитать про то как лучше раскидать характеристики товара в разные таблицы ... я так думаю что в 1 таблице должа быть инфа которая показывается допустим в общем списке товаров 2я таблица там где каждый товар в отдельности а 3я это типа исчерпывающая инфа по товару(или доп. инфа)... я вообще думаю в правильном направлении?))
 
Сверху