This editorial was originally published on May 8, 2009. It is being re-run as Steve is on vacation.
The other day I was reading Brad McGeHee's post on duplicate indexes, and it struck a chord with me. That same issue is one I've seen many times with in house applications. Developers don't understand indexing, they create one clustered index (CI) as the PK, and then they create the same index as a nonclustered (NCI) one. Either they don't realize that the PK is an index, or they are ignorant of the differences between a CI and an NCI.
What's worse is that I see it in third party applications as well. If you're selling a product, I think you ought to know how to tune it for a database. If you don't, I'd like to see some recourse for clients. Maybe some common settlement in a lawsuit. A few of those and I bet you'd have more DBAs hired by software firms.
Or a little more training for developers.
For this Friday's poll, I wanted to pick on developers a little. I like developers, I appreciate the work they do creating some great applications I use, but I also think they make some silly database mistakes. So this week:
What are common mistakes developers make in SQL Server?
Indexing is one area, but what other things do you see a lot from developers? I'm thinking a good list of mistakes here might be a nice checklist to go over with developers as they complete an application. It could be in code reviews, QA, pre-purchase requirements, RFPs, any number of places.
I'll add one more indexing issue that I've seen often in third party applications. Too often I've seen developers create a separate index on every single field in a table. For all tables! I realize that indexes improve query performance, but it does create an issue with inserts/updates, and space. Space isn't an issue as much as it was in the past, but as data sizes get larger, I would not be surprised to see this becoming a problem in some applications. More indexes also impact backup time and size.
Give us a response this Friday of the common mistakes that you see developers making, and that you wish they'd learn to avoid.