I had a new client call today; I know this is two days in a row. Either way I got to talking with this client on the phone for a while and started to really learn a few things about him and his system. The more we talked I mentioned to him that the conversation would make a good blog entry. See we were talking about best practices and he wants me to review a server for him to double check to see if there are any knobs we can turn or twist that would help his performance. As I mentioned in my previous post there are some standard questions that I need to know before we get started.
After we talk about the system and the hardware he made mention to me that he did not follow all the best practices when it came to database design. It appears that he has an extremely high number if inserts and selects that occur on the database and there needs to be sub-second returns on the queries. He wanted to make sure that when I looked at the system that I was aware that the tables were not normalized, even though he knew it was a best practice. See they recognized that based on how they were going to have to present the data and the speed it needed to be done was to try to leave the tables as flat and wide as they could.
The way I look at it is that recommended best practices are just that, recommend. There are going to be times when you don’t need to follow them and maybe for the better performance of your database it is ok to step out of that “Best Practices” and take a new look at what and how you are storing and retrieving the data. If you can do it faster by not following the best practices and you need the speed, disk space is not a concern then maybe that is the way you should do it. In most cases best practices are the best way to do it. They are recommend that way because most databases will work best with those practices.