-1

晚上好,我有这个查询,我无法解决它。它永远不会完成,但它会在 MSSQL 2000 上完成,我想在 MySQL 上拥有它。有什么建议吗?

SELECT T_Coll.Nom_REGION AS Region_Col,
       T_Coll.Nom_STE AS Societe_Col,
       T_Coll.Nom_ETS AS Ets_Col,
       T_Coll.Nom_CDP AS CDP_Col,
       T_Coll.ID_Coll,
       T_Coll.NomColl AS NomColl,
       T_Coll.Nom_Coll AS NOM,
       T_Coll.Prenom_Coll AS Prenom,
       T_Coll.Trig_Coll,
       T_Coll.EXTERN,
       T_DETAIL.AN,
       T_DETAIL.Mois_Modif,
       T_DETAIL.T_AFFAIRE_ID,
       T_DETAIL.T_LOT_ID,
       T_DETAIL.T_SOUS_LOT_ID,
       T_Type.NomType,
       T_DETAIL.AUTRE_LIBELLE,
       T_DETAIL.JOUR01 + T_DETAIL.JOUR02 + T_DETAIL.JOUR03 + T_DETAIL.JOUR04 + T_DETAIL.JOUR05 + T_DETAIL.JOUR06 + T_DETAIL.JOUR07 + T_DETAIL.JOUR08 + T_DETAIL.JOUR09 + T_DETAIL.JOUR10 + T_DETAIL.JOUR11 + T_DETAIL.JOUR12 + T_DETAIL.JOUR13 + T_DETAIL.JOUR14 + T_DETAIL.JOUR15 + T_DETAIL.JOUR16 + T_DETAIL.JOUR17 + T_DETAIL.JOUR18 + T_DETAIL.JOUR19 + T_DETAIL.JOUR20 + T_DETAIL.JOUR21 + T_DETAIL.JOUR22 + T_DETAIL.JOUR23 + T_DETAIL.JOUR24 + T_DETAIL.JOUR25 + T_DETAIL.JOUR26 + T_DETAIL.JOUR27 + T_DETAIL.JOUR28 + T_DETAIL.JOUR29 + T_DETAIL.JOUR30 + T_DETAIL.JOUR31 AS Total_Jours,
       T_DETAIL.JOUR01 + T_DETAIL.JOUR02 + T_DETAIL.JOUR03 + T_DETAIL.JOUR04 + T_DETAIL.JOUR05 + T_DETAIL.JOUR06 + T_DETAIL.JOUR07 + T_DETAIL.JOUR08 + T_DETAIL.JOUR09 + T_DETAIL.JOUR10 + T_DETAIL.JOUR11 + T_DETAIL.JOUR12 + T_DETAIL.JOUR13 + T_DETAIL.JOUR14 + T_DETAIL.JOUR15 + T_DETAIL.JOUR16 + T_DETAIL.JOUR17 + T_DETAIL.JOUR18 + T_DETAIL.JOUR19 + T_DETAIL.JOUR20 + T_DETAIL.JOUR21 + T_DETAIL.JOUR22 + T_DETAIL.JOUR23 + T_DETAIL.JOUR24 + T_DETAIL.JOUR25 + T_DETAIL.JOUR26 + T_DETAIL.JOUR27 + T_DETAIL.JOUR28 + T_DETAIL.JOUR29 + T_DETAIL.JOUR30 + T_DETAIL.JOUR31 + T_DETAIL.REGUL AS Total_Jours_et_Reg,
       T_DETAIL.REGUL,
       T_Cam.ID AS ID_Cram,
       T_Cam.STATUT,
       T_Cam.T_COLLABORATEUR_ID AS ID_Cram_Coll,
       T_DETAIL.ID AS ID_Cram_Detail,
       T_DETAIL.MOIS,
       T_DETAIL.JOUR01,
       T_DETAIL.JOUR02,
       T_DETAIL.JOUR03,
       T_DETAIL.JOUR04,
       T_DETAIL.JOUR05,
       T_DETAIL.JOUR06,
       T_DETAIL.JOUR07,
       T_DETAIL.JOUR08,
       T_DETAIL.JOUR09,
       T_DETAIL.JOUR10,
       T_DETAIL.JOUR11,
       T_DETAIL.JOUR12,
       T_DETAIL.JOUR13,
       T_DETAIL.JOUR14,
       T_DETAIL.JOUR15,
       T_DETAIL.JOUR16,
       T_DETAIL.JOUR17,
       T_DETAIL.JOUR18,
       T_DETAIL.JOUR19,
       T_DETAIL.JOUR20,
       T_DETAIL.JOUR21,
       T_DETAIL.JOUR22,
       T_DETAIL.JOUR23,
       T_DETAIL.JOUR24,
       T_DETAIL.JOUR25,
       T_DETAIL.JOUR26,
       T_DETAIL.JOUR27,
       T_DETAIL.JOUR28,
       T_DETAIL.JOUR29,
       T_DETAIL.JOUR30,
       T_DETAIL.JOUR31,
       T_Supr.Suppression,
       T_Coll.TYPE
FROM T_Coll
INNER JOIN T_Cam ON  T_Cam.T_COLLABORATEUR_ID = T_Coll.ID_Coll
INNER JOIN T_DETAIL ON  T_DETAIL.T_Cam_ID = T_Cam.ID
INNER JOIN T_Type ON T_Type.TYPE = T_DETAIL.TYPE 
LEFT OUTER JOIN T_Supr ON T_Supr.ID_Cram_Detail = T_DETAIL.ID

WHERE (T_Supr.Suppression IS NULL)

ORDER BY T_Coll.NomColl,
         T_DETAIL.AN,
         T_DETAIL.Mois_Modif,
         T_DETAIL.T_AFFAIRE_ID,
         T_DETAIL.T_LOT_ID,
         T_DETAIL.T_SOUS_LOT_ID

我只是无法在 MySQL 下完成这项工作!

提前致谢 !

4

1 回答 1

1

连接中使用的所有列、where 子句和 order by 可能都应该被索引。在没有索引的任何数据库中,您不能期望任何类型的体面性能。您的查询没有什么非常复杂的,所以这是最有可能的问题。

不要返回任何您不需要的列。例如,当基于 where 子句的值始终为 nulll 时,为什么要返回 T_Supr.Suppression?

在 mysql 中,您应该查看解释计划,以了解慢查询问题出在哪里。在 SQL Server 中查看执行计划。您需要学习如何阅读这些以有效地使用 SQL 进行编程。

于 2013-04-11T15:35:35.293 回答