Using WBW Filter and it makes the website slow
-
Hello author. I have an wocommerce website with 2.7k products and using a filter called WBW filter which really slowdown my website. I did disabled it and website loads like a charm. I have played with setups and optimization and nothing really worked out.
When I click the parent category usally loads after 9-10 sec. Do you think if I install this plugin it might help?
I am using Query monitor and giving me a slow query report DBWpf: get /wp-content/plugins/woo-product-filter/modules/woofilters/mod.php:4125] */ of 0.0559 time
Hoping you can assist.
Thanks
-
Thanks for this.
I think it is about https://wordpress.org/plugins/woo-product-filter/
That plugin seems to create, then use, temporary tables in the database, and I cannot tell from the information you gave me what part of its operation is causing slowdowns.
If you can show me the slow queries it will help. Three possible ways.
- Try using this plugin to add high-performance keys to wp_postmeta. See if it works. This is probably the easiest way to try things out. And it will help other aspects of WooCommerce.
- Install John Blackbourn’s Query Monitor plugin, do the slow operation, look at the output and cut’n’paste the slow query to a reply here.
- Install this https://wordpress.org/plugins/index-wp-mysql-for-speed/ plugin, then use it to capture a monitor. While the monitor is active do some of the slow operations. When the monitor is captured, upload the monitor and reply to this topic with the upload id.
You can read about capturing monitors here. https://www.plumislandmedia.net/index-wp-mysql-for-speed/monitor_database_operations/
Hello Ollie, yesterday I tried converting all to high -performance keys including wp-postmeta. Also I did upload the result using monitor tab with ID MmxRy9RR. Thank you.
Also unsure if I capture the latest as I was testing a preload cache and disabled it when I did a fresh monitor.
Thanks for the upload.
The high-performance keys seem to help a bit. Is that your experience?
That plugin contains some SQL performance antipatterns, unfortunately. In particular, the pattern
WHERE something IN (great, long, list, of, many, different, terms)
doesn’t perform really well.
Hello Ollie, did not really notice much difference when I converted to high-performance keys. Any other ways I can improve the speed? do you think?
I noticed a slow response when doing an update with products. Also when importing csv resulting to Bad gateway.
-
This reply was modified 6 months ago by
grant512.
If you can capture another, shorter-duration, monitor where you do the slow things as the monitor is being captured, I can take another look.
But, I have to say, it looks like you use a shared hosting service and your site may be hitting its limitations.
HI, I did start a monitor again. Still the same id MmxRy9RR
Hi, could you please upload that monitor? Thanks.
I haven’t heard back. Please don’t hesitate to open another support topic if i can help further.
By the way, I’m not stunned by the efficiency of the wbw query code, to put it mildly.
Hello John, here is the Query Report
SELECT tr.term_taxonomy_id, tt.term_id, tt.taxonomy, tt.parent, COUNT(*) as cnt
FROM wpf_temp_table AS wpf_temp
INNER JOIN wp_term_relationships tr
ON (tr.object_id=wpf_temp.ID)
INNER JOIN wp_term_taxonomy tt
ON (tt.term_taxonomy_id=tr.term_taxonomy_id)
INNER JOIN wp_terms ttt
ON (ttt.term_id=tt.term_id)
INNER JOIN wp_wpf_meta_data md_type
ON (md_type.product_id=wpf_temp.ID
AND md_type.key_id=1)
WHERE tt.taxonomy IN (‘product_cat’, ‘pwb-brand’, ‘pa_series’, ‘pa_fender-type’, ‘pa_width-sf’, ‘pa_diameter’, ‘pa_bend-size’, ‘pa_size-diam’, ‘pa_base-diameter’, ‘pa_measurements’, ‘pa_centre-hole’, ‘pa_overal-length-sf’, ‘pa_inlet-type’, ‘pa_round-barrel’, ‘pa_size-a-od’, ‘pa_id-size’, ‘pa_od-size’, ‘pa_inlet-id’, ‘pa_stacks-length’, ‘pa_inlet’, ‘pa_nat-aspirated’, ‘pa_length’, ‘pa_body-od’, ‘pa_barrel-diameter-am’, ‘pa_barrel-length’, ‘pa_working-range’, ‘pa_size-a-id’, ‘pa_suits-sb’, ‘pa_style’, ‘pa_configuration’, ‘pa_leg-length’, ‘pa_id-clamping-size’, ‘pa_od-clamping-size’, ‘product_tag’)
AND (md_type.val_id!=3
OR tt.taxonomy NOT IN (‘pa_series’,’pa_width-sf’,’pa_diameter’,’pa_bend-size’,’pa_size-diam’,’pa_overal-length-sf’,’pa_id-size’,’pa_od-size’,’pa_inlet-id’,’pa_stacks-length’,’pa_inlet’,’pa_nat-aspirated’,’pa_length’,’pa_body-od’,’pa_barrel-diameter-am’,’pa_barrel-length’)
OR EXISTS(SELECT 1
FROM wpf_temp_table_var_attrs as p_childs
WHERE p_childs.id=wpf_temp.id and p_childs.taxonomy=tt.taxonomy and p_childs.value=ttt.slug
LIMIT 1))
GROUP BY tr.term_taxonomy_id /* From [cscparts.com.au/tag/truck/] in [/nas/content/live/cscparts/wp-content/plugins/woo-product-filter/modules/woofilters/mod.php:4155] */Unsure why the monitor is logging Sept 7 only. I did start monioting just now and its not updating.
Saved monitors monitor September 4, 2025 5:41 am―September 7, 2025 8:56 pm (3.6d) 3,105 queries captured.VersionsPlugin:1.5.4 MySQL:8.0.43-34 WordPress:6.8.3 WordPress database:60421 php:8.2.29
Oh, my my my. That is one giant hairball of a query, with some epic index-defeating WHERE clauses. IN(big list) OR (NOT IN(big list) AND something != something). Holy cow.
I don’t think any amount of indexing voodoo can fix it, sorry to say. If I were the WBW developer, I would be very interested in examining your use case and trying to improve performance by reworking the code.
I wish I could help. But I don’t believe I can.
You must be logged in to reply to this topic.