alors disons que je construis ce système de gestion de contacts. Il existe une table USER et une table CONTACT_INFO. Pour chaque USER, je peux avoir zéro ou plusieurs enregistrements CONTACT_INFO. La façon dont je l'ai défini, j'ai configuré une clé étrangère dans ma table CONTACT_INFO pour pointer vers l'enregistrement USER correspondant.Créer une requête optimale pour trouver les enregistrements qui sont dans un seul tableau
Je voudrais rechercher tous les enregistrements USER qui n'ont pas d'enregistrements CONTACT_INFO.
Je pense que cela pourrait se faire:
SELECT * FROM user u WHERE u.user_id NOT IN (SELECT DISTINCT c.user_id FROM CONTACT_INFO);
Ma préoccupation est que les tables se développent, les performances de cette requête peut se dégrader de manière significative.
Une idée avec laquelle je joue est d'ajouter une colonne dans la table USER qui indique si elle a des enregistrements CONTACT_INFO ou non. Aussi, je me demandais, si en insérant un enregistrement dans CONTACT_INFO, le SGBD doit vérifier que l'enregistrement existe, il accèderait déjà à cet enregistrement pour des raisons de vérification et donc de mise à jour, quand je mets à jour un enregistrement CONTACT_INFO ne devrait pas être C'est coûteux, performant.
Comme toujours, les commentaires sont appréciés.
Vous devriez essayer plusieurs des options ci-dessous, puis déterminer le plan de requête et les performances pour chacun d'entre eux et choisir le meilleur. –
De quels SGBD parlons-nous? – AakashM