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

Форум MySQL

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

 

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

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

тема: Какой запрос выполнится быстрее?
 
 автор: Ivan   (29.02.2008 в 06:28)   письмо автору
 
 

Задача. Есть каталог товаров с кучей разных подразделов.
Один и тот же объект нужно показывать в списке в одном или нескольких разделах каталога

Что будет работать быстрее и грузить сервак меньше?
1) создание дополнительной таблицы, где будут содержаться связи объекта и нужных разделов, и затем выборка по двум таблицам.
Что-то типа:
SELECT * FROM Table1 as a, Table2 as b WHERE a.ObjectID=b.ObjectID GROUP BY a.ObjectID

2) запись в определенное поле списка ID всех разделов, и затем выборка
Например:
SELECT * FROM Table1 WHERE FIND_IN_SET('$id',Subcategories)>0

3) Может быть, третий и далее варианты?

Пользовался первым способом (когда-то cheops и посоветовал), но в силу специфики CMS мне в общем-то удобнее хранить в одной таблице. А если будет много записей (допустим, полмиллиона)?

   
 
 автор: ONYX   (29.02.2008 в 08:40)   письмо автору
 
   для: Ivan   (29.02.2008 в 06:28)
 

Лучше все храить в одной таблице и обращаться по идентификаторам

   
 
 автор: Ivan   (02.03.2008 в 06:25)   письмо автору
 
   для: ONYX   (29.02.2008 в 08:40)
 

Не понял вашего ответа. Видимо, вопрос неточен.

Попробую поставить его иначе:
С помощью какой конструкции будет быстрее всего извлекать подстроку из данных, хранящихся в определенном столбце?

В первом посте в примере я использовал FIND_IN_SET
Т.е. я записываю в столбец Column строку из чисел: 1,2,5,7,89,45
Потом извлекаю нужные строки по условию WHERE FIND_IN_SET('5',Column)>0

Это работает, но, возможно, будет поудачнее вариант в плане оптимизации?

   
 
 автор: cheops   (02.03.2008 в 13:50)   письмо автору
 
   для: Ivan   (29.02.2008 в 06:28)
 

Лучше всё-таки отдельную таблицу завести и удобнее и простор для оптимизации имеется (всегда можно добавить индексы по столбцам).

   
 
 автор: Ivan   (02.03.2008 в 15:08)   письмо автору
 
   для: cheops   (02.03.2008 в 13:50)
 

Провел первые полевые испытания.
Пока показывает, что выборка из одной таблицы быстрее (записей мало).
Надо накачать еще записей поболее..

   
Rambler's Top100
вверх

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