SQL-Filter sucht nach mehreren Spaltenwerten

Ich beschäftige mich mit einer Tabelle (3 + Millionen Zeilen, SQL server) Ich muss die Ergebnisse nach den beiden folgenden Spalten filtern:

<code> ...FromID| ToID |Column5|.... ...1001 2001 ...1002 2020 ...1003 5000 ...1001 3000 ...2001 1001 </code> 

Jetzt kann User1 auf datasätze mit FromID oder ToId 1001 zugreifen. FromID|ToID 1001|2001 1001|3000 2001|1001
FromID|ToID 1001|2001 1001|3000 2001|1001

User2 kann auf datasätze mit FromID oder ToID zugreifen 1002,1003,3000 FromID|ToID 1002|2020 1003|5000 1001|3000

Was ist der effizienteste path, dies zu tun? Muss ich eine view für jeden Benutzer erstellen? (Dies funktioniert auf Unternehmen, Benutzer zählen wird max 100) Danke.

PS Meine erste Frage. Oo

Ihre Zugangskriterien scheinen ziemlich willkürlich zu sein. User1 bekommt 1001 , user2 bekommt 1002 , 1003 und 3000 , und ich nehme an, dass Benutzer 3 bis 99 auch willkürlichen Zugriff haben. In diesem Fall empfehle ich Ihnen, eine Tabelle zu erstellen, nennen Sie diesen useraccess für dieses Beispiel:

 user |accessID --------------- user1|1001 user2|1002 user2|1003 user2|3000 ... |... 

Nun, wenn Sie wissen wollen, welche Zeilen ein Benutzer hat, können Sie dies tun:

 SELECT t.FromID, t.ToID, [[other columns you care about]] FROM yourtable t JOIN useraccess a ON t.FromID = a.accessID OR t.ToID = a.accessID WHERE a.user = 'user2' 

Sie können diese Abfrage entweder dynamisch ausführen oder eine view erstellen, die darauf basiert. Die üblichen Kompromisse zwischen viewen und direkten Abfragen gelten wie üblich.

Bearbeiten: Ich habe gerade deine Notiz gesehen, dass du bereits eine UserRights Tabelle hast, also hast du bereits Schritt 1 abgeschlossen.