Mindy recently had an interview. It started off quite well. The company seemed to be well run, the first few folks Mindy talked too seemed nice enough. And then she sat down with their lead developer, Davin.
"What's your experience with SQL Server stored procedures?" Davin asked.
"Oh, well, you know, I'll sometimes use them as prepared queries, if performance tuning calls for it, but I always avoid implementing business logic in a stored procedure beca-"
"No business logic in the stored procedures? I take that as an insult," Davin said. "SQL Server has all the power you need, and trying to scale out the web layer will cost money!"
"Sure," Mindy said, "but it's much harder to scale out the database layer, and diffic-"
"For instance," Davin said, "I've written a hyperoptimized stored procedure to handle StartsWith
queries."
"You… wrote a starts with method?" Mindy asked. "I mean, if it were me, I'd probably do a column = 'prefix%
, or maybe CharIndex
…"
"No! Building a search tree is much faster. My code builds a tree out of the string to compare the incoming string. Then, when searching, I don't need to look at every character."
"But… don't you have to look at every character to build the tree?"
Davin blinked, and then said, "It's much faster to use a tree."
The interview ended not much later. A few days after that, the recruiter called Mindy to let her know that the company had decided not to move forward with her. In the end, she didn't really mind that outcome.