我对产品目录的查询有几个问题。查询如下:
SELECT DISTINCT (cc_id) FROM cms_catalogo
JOIN cms_catalogo_lingua ON ccl_id_prod=cc_id
JOIN cms_catalogo_famiglia ON (FIND_IN_SET(ccf_id, cc_famiglia) != 0)
JOIN cms_catalogo_categoria ON (FIND_IN_SET(ccc_id, cc_categoria) != 0)
JOIN cms_catalogo_sottocat ON (FIND_IN_SET(ccs_id, cc_sottocat) != 0)
LEFT JOIN cms_catalogo_order ON cco_id_prod=cc_id AND cco_id_lingua=1 AND cco_id_sottocat=ccs_id
WHERE ccc_nome='Alpine Skiing' AND ccf_nome='Ski'
我注意到第一次查询平均需要 4.5 秒,然后变得很快。我使用 FIND_IN_SET 是因为在表“cms_catalogo”上的数据库中,我有列“cc_famiglia”、“cc_categoria”和“cc_sottocat”,内部 ID 用逗号分隔(我知道这很愚蠢)。
例子:
表 cms_catalogo
列 cc_famiglia : 1,2,3,4,5
表 cms_catalogo_famiglia
列 ccf_id:3
查询速度变慢可能是由于使用 FIND_IN_SET 造成的?
如果不是用逗号分隔 ID,而是有一个以 ID 作为索引的表会更快?
但是,我无法解释为什么第一次执行查询很慢,然后又加快了