<code>SELECT B.dict_data_name, SUM(A.pv) AS pv FROM shw_mo_health_news A INNER JOIN bas_dict_data B ON A.third_name_dictid = B.item_id WHERE A.class_level = 3 AND B.class_id = 1012 AND A.collect_date >= '2016-04-01' AND A.collect_date <= '2016-05-31' GROUP BY A.third_name_dictid ORDER BY pv DESC;</code>
Die tatsächliche Abfragezeit für Benutzer beträgt etwa 0,6 Sekunden
Ansicht mit Erklärung:
<code>SELECT B.dict_data_name, A.PV FROM ( SELECT hn.third_name_dictid, SUM(hn.pv) AS PV FROM shw_mo_health_news hn WHERE hn.class_level = 3 AND hn.collect_date >= '2016-04-01' AND hn.collect_date <= '2016-05-31' GROUP BY hn.third_name_dictid ) A, ( SELECT dd.item_id, dd.dict_data_name FROM bas_dict_data dd WHERE dd.class_id = 1012 ) B WHERE A.third_name_dictid = B.item_id ORDER BY PV DESC</code>
Die tatsächliche Zeit beträgt etwa 0,03 Sekunden
Ansicht erklären
Warum gibt es einen so großen Unterschied in der Effizienz dieser beiden Abfragemethoden?
Viele Leute im Internet sagen, dass die Effizienz dieser beiden Schreibmethoden fast gleich ist, aber meine eine ist 0,6 und die andere 0,03, der Unterschied zwischen den beiden ist immer noch ziemlich groß. Liegt es daran, dass mit der SQL-Anweisung, die ich geschrieben habe, etwas nicht stimmt, oder liegt es an etwas anderem?