A database is a complex bit of kit, its designed to be queried alot, good coders will build in good code and database design to get the most out of it.
Database and programs only do what they are told, you have to program them to get the results you require, if you want to search for specific amounts then you program that, if you want to to do a to and from range you need to program that, then how does the user put in the information, you also need to program that in a way the user will understand, putting £250-300 in a text box to get a price range isn't standard so is there a point in building it?
The idea is you keep the content in the database update, and then the code will do the rest. There are lots of ways to not call the database everytime you need some information but thats down to how good your coder is, you can call a database then store that in cache and then call the cache, but it all depends on the build becuase your using up memory storing it in he cache, so its a trade of one for the other, again its all down to the programmer and the project.
The other issue is there are no real right and wrong ways to do it, its alot down to personal choice, knowledge and end result.