以下查询效率不高,我需要让它运行得更快。
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY sob_datas ALL sob_form_id,sob_form_id_2 NULL NULL NULL 365990 Using where
2 DEPENDENT SUBQUERY sub_sob_datas ALL sob_form_id,sob_form_id_2 NULL NULL NULL 365990 Using where
如何优化此查询? sob_field_value
是text
字段
我在每个具有不同值的表单中提取字段。
SELECT
sob_datas.id,
sob_datas.sob_field_name,
sob_datas.sob_field_value
FROM sob_datas
WHERE sob_form_id = '.$proof['SobForm']['id'].' AND
EXISTS(
SELECT
sub_sob_datas.id
FROM sob_datas AS sub_sob_datas
WHERE sub_sob_datas.sob_form_id = '.$original['SobForm']['id'].' AND
sub_sob_datas.sob_field_name = sob_datas.sob_field_name AND
sub_sob_datas.sob_field_value != sob_datas.sob_field_value
)
我还应该指出,我将仅使用新值
更新已更改的字段答案 0 :(得分:2)
很难绕过这里想要做的事情:)所以希望我抓住了这一点,这就是你正在寻找/工作的东西。如果不让我知道,我会试着弄明白。
一些测试数据可能有助于整个过程(5-10行左右)以及从这些行中获取的内容。但是这是我的注意力:
SELECT
sob_datas.id,
sob_datas.sob_field_name,
sob_datas.sob_field_value
FROM sob_datas sd
JOIN sob_datas ssd ON sd.sob_field_name = ssd.sob_field_name
WHERE sd.sob_form_id = '.$proof['SobForm']['id'].'
AND sd.sob_field_value != ssd.sob_datas.sob_field_value