Niejednokrotnie potrzebujemy podejrzeć zapytanie SQL wygenerowane przez EF. Często zdarza się, że takie zapytanie chcemy odpalić na bazie danych i zobaczyć wynik. Można wtedy podpiąć się profilerem do bazy i przechwycić je w całości. Niestety takie rozwiązanie jest bardzo czasochłonne. Można też wywołać metodę ToString() na obiekcie typu IQuarable, jednakże to rozwiązanie dostarczy nam zapytanie SQL bez parametrów filtrujących. W tym artykule opiszę jak bezpośrednio w kodzie uzyskać pełne zapytanie SQL wraz z parametrami filtrującymi.
Continue reading
Tag Archives: sql
Full-Text Search – zadawanie zapytań
W poprzednim artykule została opisana instalacja i konfiguracja wyszukiwania pełnotekstowego dla języka polskiego. Do całości rozwiązania brakowało jednak sposobu zadawania zapytań na indeks FTS, co opisałem w tym artykule.
Zadawać zapytania można tylko na kolumnach o typie tekstowym (char, varchar, nchar, nvarchar, text, ntext, image, xml, varbinary). Można to zrealizować na dwa sposoby. Pierwszy z nich wykorzystuje predykaty CONTAINS oraz FREETEXT. Druga metoda wykorzystuje funkcje CONTAINSTABLE oraz FREETEXTTABLE.
Continue reading
Full-Text Search – instalacja i konfiguracja
Wyszukiwanie pełnotekstowe, to mechanizm wydajnego przeszukiwania kolumn o charakterze tekstowym. W tym celu zakładany jest specjalny indeks na tabeli, która ma zostać przeszukana. Zapytania wykonywane na takim indeksie pozwalają dokonać językowego przeszukiwania opartego na regułach określonego języka. Zwrócone rezultaty, to obiekty zawierające przynajmniej jedno dopasowanie (tzw. hit). Poniżej został opsiany proces instalacji oraz konfiguracji polskich narzędzi do Full-Text Search na przykładzie Microsoft SQL Server.
Continue reading
Sortowanie kolumny VARCHAR(2500)
Załóżmy, że mamy tabelę z kolumną typu VARCHAR(2500), a w niej sporo wierszy. Wynik zapytania z tej tabeli chcielibyśmy posortować według wspomnianej kolumny. Oczywiście będzie to bardzo czasochłonne, a tym samym słabo wydajne. Jak sobie z tym poradzić?
Continue reading
Unique index
Może wydarzyć się sytuacja, że zajdzie konieczność utworzenia unikalnego klucza na kolumnie typu tekstowego (CHAR lub VARCHAR). W tym momencie warto nadmienić, iż każdy znak zajmie wtedy 1 bajt. Jeśli zaś będzie to typ danych unicode (NCHAR lub NVARCHAR), to znak zapisany będzie na 2 bajtach pamięci. Dlaczego o tym wspominam? Ponieważ jeśli wielkość indeksu przekroczy magiczną granicę 900 bajtów pojawia się Error 1946: „Operation failed. The index entry of length 1000 bytes for the index 'UQ_table1′ exceeds the maximum length of 900 bytes.”
Continue reading
Workstation ID i HOST_NAME
Kiedyś zostałem zmuszony do szybkiego, nawet bardzo szybkiego, zrealizowania zagadnienia: „archiwizacja poczynań użytkownika w systemie„. Prościej rzecz ujmując, rejestracji 3 podstawowych operacji na każdej tabeli, a dokładniej jej wierszach, mianowicie: INSERT, UPDATE, DELETE. Poniżej zaprezentuję jak uporałem się z tym zagadnieniem.
Continue reading