Php 查询检查的行太多,如何减少?

Php 查询检查的行太多,如何减少?,php,mysql,query-optimization,Php,Mysql,Query Optimization,下面的查询效率不高,我需要让它运行得更快 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_for

下面的查询效率不高,我需要让它运行得更快

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
如何优化此查询<代码>账套\字段\值是一个
文本
字段

我在这些表单中抽取具有不同值的字段

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
            )

我还应该指出,我将仅用新值更新更改的字段(很难理解这里要做的事情:)因此,希望我抓住了重点,这就是您正在寻找/工作的内容。如果不让我知道,我会设法解决

一点测试数据可能有助于整个过程(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