0
我正在做一些关于WordPress数据的分析,我目前有一个本地的SQLite数据库与一些相关的表和一个python脚本来做分析。我目前运行这个查询,运行速度很慢。我有可能进行快了很多的感觉,但我不能确定如何:想知道如何使这个SQL(SQLite3)查询更有效
SELECT
wp_postmeta.post_id,
wp_postmeta2.meta_value address,
wp_postmeta3.meta_value postal,
wp_postmeta4.meta_value city,
wp_postmeta5.meta_value email,
wp_postmeta6.meta_value firstname,
wp_postmeta7.meta_value lastname,
wp_postmeta8.meta_value soort,
wp_postmeta9.meta_value stamboek_1,
wp_postmeta10.meta_value stamboek_2,
wp_postmeta11.meta_value stamboek_3,
wp_postmeta12.meta_value stamboek_4,
wp_postmeta13.meta_value phone
FROM
wp_postmeta
LEFT JOIN wp_postmeta as wp_postmeta2 ON wp_postmeta.post_id = wp_postmeta2.post_id AND wp_postmeta2.meta_key = '_abo_address'
LEFT JOIN wp_postmeta AS wp_postmeta3 ON wp_postmeta.post_id = wp_postmeta3.post_id AND wp_postmeta3.meta_key = '_abo_postal'
LEFT JOIN wp_postmeta AS wp_postmeta4 ON wp_postmeta.post_id = wp_postmeta4.post_id AND wp_postmeta4.meta_key = '_abo_city'
LEFT JOIN wp_postmeta AS wp_postmeta5 ON wp_postmeta.post_id = wp_postmeta5.post_id AND wp_postmeta5.meta_key = '_abo_email'
LEFT JOIN wp_postmeta AS wp_postmeta6 ON wp_postmeta.post_id = wp_postmeta6.post_id AND wp_postmeta6.meta_key = '_abo_firstname'
LEFT JOIN wp_postmeta AS wp_postmeta7 ON wp_postmeta.post_id = wp_postmeta7.post_id AND wp_postmeta7.meta_key = '_abo_lastname'
LEFT JOIN wp_postmeta AS wp_postmeta8 ON wp_postmeta.post_id = wp_postmeta8.post_id AND wp_postmeta8.meta_key = '_abo_soort'
LEFT JOIN wp_postmeta AS wp_postmeta9 ON wp_postmeta.post_id = wp_postmeta9.post_id AND wp_postmeta9.meta_key = '_abo_stamboek_1'
LEFT JOIN wp_postmeta AS wp_postmeta10 ON wp_postmeta.post_id = wp_postmeta10.post_id AND wp_postmeta10.meta_key = '_abo_stamboek_2'
LEFT JOIN wp_postmeta AS wp_postmeta11 ON wp_postmeta.post_id = wp_postmeta11.post_id AND wp_postmeta11.meta_key = '_abo_stamboek_3'
LEFT JOIN wp_postmeta AS wp_postmeta12 ON wp_postmeta.post_id = wp_postmeta12.post_id AND wp_postmeta12.meta_key = '_abo_stamboek_4'
LEFT JOIN wp_postmeta AS wp_postmeta13 ON wp_postmeta.post_id = wp_postmeta13.post_id AND wp_postmeta13.meta_key = '_abo_phone'
WHERE wp_postmeta.post_id IN (SELECT post_id from `wp_postmeta` WHERE (meta_key = '_abo_magazine_tegoed' AND meta_value <> 0))
GROUP BY wp_postmeta.post_id
的想法是基本调换所选POST_ID,meta_value和meta_key结果。
我没有非常先进的SQL技能,谷歌搜索没有取得那么多有用的结果。该查询工作得很好,但我不知道如何做得更快。我非常期待您的任何建议!
您是否尝试制作表格,即与元键匹配的子查询?否则,metakeys上的索引可能会加速。 – Yunnosch
请提供您的模式和几行“插入...”来制作[mcve]。 – Yunnosch
https://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very-simple-sql-query – Yunnosch