Людии привет). Есть у меня таблица к примеру хранит цвет, размер, бренд. Я делаю выборки иногда по бренду, иногда по цвету, иногда по размеру, а иногда по любой комбинации этих свойств. Так вот чтоб быстрее работало как лучше.. У меня сейчас для каждого поля отдельного есть индекс. Но так как делаю выборки порой и комбинации этих параметров выиграю ли я от того что создам комбинированные ключи? )))))))))))))
Ну не то чтобы слишком медленно но хотелоь бы чтоб летало прям.. Записей в бд примерно тысяч 30-40... Пример запросов отрабатывающих SELECT DISTINCT `color` FROM `catalog_parameters` WHERE `brand` IN(3,65,7) AND price BETWEEN 100 AND 20000; SELECT DISTINCT `brand` FROM `catalog_param` WHERE `color` IN (1,5,7,9) AND price BETWEEN 100 AND 20000; 'SELECT MAX(`price`) FROM `catalog_parameters` WHERE IN (1,5,7,9) AND `brand` IN(3,65,7) 'SELECT MAX(`price`) FROM `catalog_parameters` WHERE IN (1,5,7,9) AND `brand` IN(3,65,7) SELECT DISTINCT `pid` FROM catalog_parameters WHERE `color` IN (1,5,7,9) AND `brand` IN(3,65,7) AND price BETWEEN 100 AND 20000; SELECT COUNT(DISTINCT `pid` ) /' . $this->number . ' FROM `catalog_param` WHERE `color` IN (1,5,7,9) AND `brand` IN(3,65,7) AND price BETWEEN 100 AND 20000; SELECT * FROM `catalog` WHERE id IN (Список пидов из прошлого запроса)... Суть всего этого выбираем все характеристики по очереди чтоб использовать в фильтрах....Под цоней достаем из каталога те продукт иды которые нам подходят для каждого товара может бть несколько записей поэтому DISTINCT (чтобы каждый товар мог иметь произвольное кол-во цветов размеров количеств) То есть красный => xl => 200штук и цена 200 зеленый => xl => 19штук и цена 250р Это у одного товара.. А под цонец с получеными пидами выбираем из основной таблицы такие параметры как имя описание товаара
а что цена (price) дублируется в в таблицах catalog_param и catalog_parameters ? и зачем вообще две таблицы с почти одинаковыми названиями? мин. и макс. цену можно вытаскивать в одном запросе
Нет дублей нету все параметры в catalog_parameters а catalog_param это так... Хм замеры пока не делал сейчас замерю..... Замерил 0.2 - 0.3 секунды не слабо хотелось бы .02 хотя бы
быстрее не будет при таком количестве записей и я подозреваю слабое железо. Не надо сильно париться. То что сервер 0,2 секунды тратит на запрос, он всё равно умудрится на круг выдать штук 25 страниц в секунду.
Замтеил протестил прошлую версию сайта где все было в одной таблице где был всего одини запрос достать товары по очереди не было ни цветов ни размеров что время генерации ни чуть не меньше а даже порой и больше... там 0.3-0.4 и я подозреваю слабое желез -- хецнер там) с 32 гигами оператики который ... Ну в принципе да) плюс у меня первый запрос так отработает а далее лоадер включается и на аяксе выборки все делаются по цветам и размерам как на асос.ком и стуктура сайта как асос.ком вот там помотрев можно понять уже почему сделал разделение на две таблицы.... Хммм ааа если... у меня xcache сейчас стоит если еще попробовать memcahed?? прирост не даст
0.126220 , 0.095700 , 0.200824 - это уже в кокретной категории 0.333348 , 0.308647 , 0.356315 - это если в общем где в перемешку все все товары...
Именно запросы не мерил проблематично будет каждый запрос померить через микротайм(труе) сложить их)) норм если бы через функцию обертку были запросы все.. Нооо время полной генерации страницы 0.126220 , 0.095700 , 0.200824 - это уже в кокретной категории через запятую 3 результата посещаолка 2400(25000страниц в сутки) не пользовал щас буду мерить) Добавлено спустя 14 минут 6 секунд: Хм а не пользовал ab (Apache HTTP server benchmarking tool)? С апачем идет разу вродь как
Провел тесты вот какие результаты) Тесты при количестве запросов по 50 с задержкой в 1 сек. 10 сессий Регрессивный режим Transactions: 500 hits Availability: 100.00 % Elapsed time: 36.01 secs Data transferred: 20.46 MB Response time: 0.12 secs Transaction rate: 13.89 trans/sec Throughput: 0.57 MB/sec Concurrency: 1.62 Successful transactions: 500 Failed transactions: 0 Longest transaction: 0.38 Shortest transaction: 0.03 10 сессий Имитация интернета Transactions: 500 hits Availability: 100.00 % Elapsed time: 34.30 secs Data transferred: 19.39 MB Response time: 0.12 secs Transaction rate: 14.58 trans/sec Throughput: 0.57 MB/sec Concurrency: 1.70 Successful transactions: 500 Failed transactions: 0 Longest transaction: 0.39 Shortest transaction: 0.02 200сессий Имитация интернета Transactions: 10000 hits Availability: 100.00 % Elapsed time: 253.50 secs Data transferred: 378.41 MB Response time: 4.28 secs Transaction rate: 39.45 trans/sec Throughput: 1.49 MB/sec Concurrency: 168.88 Successful transactions: 10000 Failed transactions: 0 Longest transaction: 18.91 Shortest transaction: 0.04 Добавлено спустя 1 минуту 39 секунд: Да урлы дал списком на общую категорию на конкретные категории и на товары.. 10 на категории 5 на товары
работает кстати все быстро не заметно)).. А вся моя проблема была не обратил внимание в рендеринге страницы у меня куча добавилась чекбоксов брендов их там более пары сотен к ним лайблы и это снизило сокорсть обработки в моем ноуте).. Плюс это еще работает через стилизованный скроллер.. У которого не большая высота вот и нагрузило все броузер поменяю чеки на ссылки и все залетает))
можно вынести часть функционала в AJAX, чтобы не грузить ненужные части и хтмл элементы. YSlow поможет тебе понять где чо. дай линку на магаз
Они по сути все нужны ноо кстати вот мысль)) то что надо скорее всего брэнды будут по началу закрыты они все равно ни всем людям нужны это самый левый фильтр а при шелчке уже подгружать... Обязательно дам)) только чуть позже сейчас его допиливаю не подобающим образом выглядит
Неее там немного другой случай) в зависимости от того какая категория показываются те брэнды лмишь которые используются.. Но вот о том что их вынести в аякс и поначалу их нет задумался... Пока суть работы фильтров можно увидеть здесь http://www.asos.com/Women/Bags-Purses/Cat/pgecategory.aspx?cid=8730
У них да поменьше у нах просто еще нет разделов женское мужское там баннеры и проча реклама у нас есть поэтому побольше и на сайте не только такие товары поэтому опять таки.. Ну чуть позже покажу завершаю сейчас))
Больше всего такое не люблю) когда рябит от инфы в глазах а от кол-ва их баннеров у меня ноут тупит). Нее еще чуть и 2500человек увидят новую версию магазина пока лазят по старому я на поддомене доделываю)
Гык реально жгут ребята)) хотя это ж динозавр.. Кстати помню время на этом форуме писал о фрилансе создание хотелось. Где ты сказал о том что надо продумывать).. На тот момент забил а мысль по сути и впрмь норм была просто не потянул бы как в бюджете на тот момент так и с проф точкри зрения. Тогда они убрали возможность добавлять отзывы и я понял что скоро станет и это стало теперь там работа через сбр все валят оттуда а валить особо не куда).. Хабрахабры фрилансим вроде засуетились сразу делать