MSSQL / ACCESS - porównanie rekordów - wydajność

0

Cześć, pyanie tyczy się zarówno bazy MSSQL, jak i Access.

Mam w tabeli powiedzmy 5000 rekordów. Tabela ma 7 pól.
Teraz zanim wrzucę rekord do tabeli muszę sprawdzić, czy już go tam nie ma.

I teraz pytanie, co zadziała szybciej / lepiej:

SELECT COUNT(*) FROM TABELA
WHERE pole1=bla and pole2=blabla and pole3=bla3 and... ...and pole7=bumbum

czy, taki pseudokodzik

SELECT COUNT(*) as val FROM TABELA
WHERE najmniej_powtarzalne_pole = wartosc

if val>0 then
select count(*) as val from tabela
where inne_malo_powtarzalne_pole = wartosc

if val>0....

Chodzi o to, że pierwszym sposobem, pakuję wszystkie wartości do warunku, drugim w warunkach jest tylko jedno pole, ale w najgorszym wypadku będzie 7 zapytań zamiast jednego.
Moim zdaniem lepszym rozwiązaniem będzie pierwsze, a Wy jak myślicie?

0

A nie lepiej ustawic klucz glowny/indeks unikalny?

0

Z tego, co wiem to indeks można ustawić na jedno pole, tak?

0

Nie wiem jak w Accessie, ale w mssql mozna na wiecej pol.

0
Juhas napisał(a)

Z tego, co wiem to indeks można ustawić na jedno pole, tak?

Kurde, nie jestem mocny z baz, ale indeksowanie coś tu naprawdę da? Bo potrzebuję, żeby wszystkie pola były unikalne.

Aha, jeszcze jedna kwestia. Muszę to zrobić z poziomu Delphi, bo czasami będzie można dodać kilka takich samych rekordów.

0

Nie chodzi o to, ze to indeks, tylko ze baza pilnuje unikalnosci zarowno w przypadku klucza na wszystkich polach czy indeksu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1