Pertama, Solr tidak menggunakan B-tree. Indeks Lucene (pustaka dasar yang digunakan oleh Solr) terbuat dari segmen
. Untuk setiap segmen, Lucene memelihara kamus istilah, yang terdiri dari daftar istilah yang muncul di segmen, diurutkan secara leksikografis. Mencari istilah dalam kamus istilah ini dibuat menggunakan pencarian biner, jadi biaya pencarian istilah tunggal adalah O(log(t))
di mana t adalah jumlah suku. Sebaliknya, menggunakan indeks RDBMS standar biaya O(log(d))
di mana d adalah jumlah dokumen. Ketika banyak dokumen berbagi nilai yang sama untuk beberapa bidang, ini bisa menjadi kemenangan besar.
Selain itu, Lucene committer Uwe Schindler menambahkan dukungan untuk kueri rentang numerik beberapa tahun yang lalu. Untuk setiap nilai bidang numerik , Lucene menyimpan beberapa nilai dengan presisi berbeda. Ini memungkinkan Lucene menjalankan kueri rentang dengan sangat efisien. Karena kasus penggunaan Anda tampaknya banyak memanfaatkan kueri rentang numerik, ini mungkin menjelaskan mengapa Solr jauh lebih cepat. (Untuk informasi lebih lanjut, baca javadocs yang sangat menarik dan berikan tautan ke makalah penelitian yang relevan.)
Tetapi Solr hanya dapat melakukan ini karena tidak memiliki semua batasan yang dimiliki RDBMS. Misalnya, Solr sangat buruk dalam memperbarui satu dokumen pada satu waktu (lebih suka pembaruan batch).