поиск по характеристикам - zend-search-lucene vs mysql plain

Jun 01, 2015 20:06

например я делаю колонки в mysql 100 штук (чтб на все случаи) - 1 плоская таблица ( Read more... )

Leave a comment

Comments 6

cbih June 1 2015, 19:22:16 UTC
Лучше нормализовать данные
properties (prop_id, prop_name)
properties_index(ware_id, prop_id, value)
тогда и индекс будет работать, и на 101-м свойстве не обломитесь

Reply

network1453 June 2 2015, 06:38:17 UTC
А если ещё сделать частотную табличку заполнения свойств по товарам и аргументы сортировать в условии запроса в порядке возрастания частоты атрибута - то будет вполне резво работать даже на миллионах записей атрибутов.

Reply

zupernintendo June 2 2015, 13:32:15 UTC
есть готовые примеры решения?

Reply

zupernintendo June 2 2015, 08:04:16 UTC
так имею нормализованые данные уже (virtuemart, bitrix), но не суть что за движек - при таком способе хранения когда свойства хранятся отдельно, поиск по свойствам тормозит даже если поиск по id а не значению и оператору '=' а не 'like' и индесксы есть для id значений и id свойств и id товаров:

SELECT p.virtuemart_product_id,
group_concat(DISTINCT pf_fcustom.custom_parent_id
ORDER BY pf_fcustom.custom_parent_id) AS custom_fields_list
FROM jos_virtuemart_products AS p
LEFT JOIN jos_virtuemart_product_customfields AS pf_custom ON p.virtuemart_product_id = pf_custom.virtuemart_product_id
LEFT JOIN jos_virtuemart_customs AS pf_fcustom ON pf_custom.virtuemart_custom_id = pf_fcustom.virtuemart_custom_id
WHERE p.product_unit != '_srv' AND (
(pf_fcustom.virtuemart_custom_id = 65)
OR
(pf_fcustom.virtuemart_custom_id = 159)
)
GROUP BY p.virtuemart_product_id
HAVING custom_fields_list = '270,271'
где ( ... )

Reply


Leave a comment

Up