Istnieje wiele rozwiązań NoSQL, z których każde ma swoje mocne i słabe strony, dlatego poniższe kwestie należy wziąć pod uwagę z odrobiną soli.
Ale zasadniczo to, co robi wiele baz danych NoSQL, polega na denormalizacji i próbuje zoptymalizować pod kątem przypadku denormalizowanego. Załóżmy na przykład, że czytasz post na blogu wraz z jego komentarzami w bazie danych zorientowanej na dokumenty. Często komentarze są zapisywane wraz z samym postem. Oznacza to, że szybciej będzie można je wszystkie pobrać razem, ponieważ są one przechowywane w tym samym miejscu i nie trzeba wykonywać łączenia.
Oczywiście możesz zrobić to samo w SQL, a denormalizacja jest powszechną praktyką, gdy potrzebna jest wydajność. Tyle tylko, że wiele rozwiązań NoSQL jest od samego początku projektowanych i zawsze można z nich korzystać w ten sposób. Otrzymujesz wtedy zwykłe kompromisy: na przykład dodanie komentarza w powyższym przykładzie będzie wolniejsze, ponieważ musisz zapisać cały dokument. Po zdenormalizowaniu musisz zadbać o zachowanie integralności danych w swojej aplikacji.
Co więcej, w wielu rozwiązaniach NoSQL nie można wykonywać dowolnych połączeń, stąd dowolne zapytania. Niektóre bazy danych, takie jak CouchDB, wymagają myślenia przed potrzebnymi zapytaniami i przygotowania ich w bazie danych.
Podsumowując, sprowadza się do oczekiwania na zdenormalizowany schemat i optymalizację odczytów w tej sytuacji, a to działa dobrze w przypadku danych, które nie są wysoce relacyjne i wymagają znacznie więcej odczytów niż zapisów.