我想提取所有具有“valeur_lisible”或“lnk_attributs_objets.valeur”或“attribut.nom”等于“%gingivite%”的人员。
我的请求如下所示:
SELECT DISTINCT ID_PERSONNE, PER_NOM, PER_PRENOM
FROM personne
LEFT JOIN instance_fiche_personnalisee ON (personne.id_personne=instance_fiche_personnalisee.id_patient)
LEFT JOIN objet ON (objet.id_patient = personne.id_personne)
LEFT JOIN datas_instance_fiche_perso ON (instance_fiche_personnalisee.id_instance = datas_instance_fiche_perso.id_instance)
LEFT JOIN lnk_attributs_objets ON (objet.pk_objet = lnk_attributs_objets.id_objet)
LEFT JOIN attributs ON (lnk_attributs_objets.id_attribut = attributs.pk_attribut)
WHERE (LOWER(datas_instance_fiche_perso.valeur_lisible) like '%gingivite%')
OR (LOWER(lnk_attributs_objets.valeur) like '%gingivite%')
OR (LOWER(attributs.nom) like '%gingivite%')
在我的小型数据库(926 人)上,它已经花费了 4s 左右。
有没有办法优化我的请求?
我是 SQL 的初学者。
备注:我使用 LEFT JOIN 因为一个人可以有一个 valeur_lisible 但没有对象(属性链接到对象)和反向。
我将要检查的值以蓝色表示为 gingivite。
