It’s always desirable to have database running in optimal performance state. I, as a DBA, even have same desires. But sometimes improved performance may negatively impact on the system users and left you in a situation where you don’t know how to react.
I personally have such an experience. Two years back, I worked for a customer from telecom domain. One of their call center’s application had performance problem. They log a Service request for optimization. Basically, call center guys generate a report on daily basis for number of complaint received. This is for management for MIS purpose. They observed that now it take more than 1 hour to generate the report.
I as a performance DBA, trace the session for report generation and observed that only one query out of several is bottleneck. Query is based on a table whose size is more than 15 GB. Since they were retriving only 1-day of data, I range-partitioned the table on complaint_date column. After partitioning, report completed in 7-10 minutes.
User’s first reaction was, after implementation, report generation was having some problems. When I asked what was the problem, he said, it was not generating complete report. His logic was, it just finished in 10 minutes, so it was not running completely.
I smiled and said “what they guys were expecting from this exercise, performance improvement or something else?”