• Discouraged (unregistered)

    Why is it that the most ignorant are the most recalcitrant? And why can't the idiot be overruled from on-high? Surely a trivial benchmark would make it clear who is right?

  • djingis1 (unregistered) in reply to Discouraged

    Facts do not displace the idiot's ideas. Trivial benchmarks can't be done, because (a) the indices are mandatory and they cannot at any point in time, in any environment, be removed and (b) benchmarks are a waste of everyone's time because the idiot's ideas are always right. Finally (c) the idiot is always right. And he has better people skills than those with knowledge.

  • giammin (unregistered)

    this remember me a guy i stumbled upon who designs databases only with nvarchar(max) column

  • Foo AKA Fooo (unregistered) in reply to Discouraged

    It's called Dunning-Kruger.

  • Ron Fox (google) in reply to Foo AKA Fooo

    "Dunning-Kruger" - soon to be known as "Trump syndrome" in the US.

  • Quite (unregistered)

    People who are too stupid to understand the implications of the Dunning-Kruger effect know everything.

  • fragile (unregistered)

    To: (Entire Company) From: (The Team) Subject: fwd: unauthorized database changes

    Bob is to die. Evidence below:

  • ray10k (unregistered)

    Classic Expert Beginner in action from what I can see. Bob, from what I can tell, believes himself to be capable and knowledgeable, and goes out of his way to prevent people from proving him wrong. The only way that could end is if either the company goes bankrupt and he finds himself unable to hold down a job because he insists on sticking with his "standards," or he admits to himself that he doesn't know as much as he thinks he does and steps down/tries to learn something new. Guess which one is more likely.

  • mjk (unregistered)

    what communication breakdown ... and then they will have audit for data access and won't have anything to show ... bad if they have audit trace in their contract ... bob must be fired.

  • fake frist (unregistered)

    "The table was populated by a trigger and it appeared that every single possible user action was logged here."

    Why didn't they disable the triggers as a first port of call rather than just truncating the table regularly?

  • Miquel “Fire” Burns (google) in reply to fake frist

    By that point, they weren't allowed to drop the trigger.

  • Appalled (unregistered) in reply to fake frist

    "i locked the schema in source control so no one but me can edit it." Removing the Trigger is a DML (i.e. Schema) command. Truncating is a Data Update command, presumably allowed for everybody (or how could the Application run).

    And does anyone know what PHB in BOB.the.PHB stands for? Pathetic, Habitual, Boob?

  • Appalled (unregistered)

    Crap. I got it backwards, dyslexia,

    DML is Data Manipulation Language, I meant to say DDL, Data Definition Language

  • PHB (unregistered) in reply to Appalled

    Well, this, most likely: https://en.wikipedia.org/wiki/Pointy-haired_Boss

  • DocMonster (unregistered)

    Ah the classic "we're so paranoid we need to log every single possible change" syndrome. Seems every company has some variation of that...

  • David (unregistered)

    I've had a similar experience where the 'Head of Development' insisted that we had to use a flexible database structure that stored basically all data as key-value pairs, including data used for joins between tables. I put my foot down saying that the performance would be unacceptable, got backed up by a colleague, and as a result managed to get a higher-up manager to insist on a proof of concept. After the proof of concept the idea was never heard of again. For sparsely populated data that kind of structure can be worthwhile, but far too many management-level developers seem to make these kinds of elementary mistakes. They don't want to change, but it's not necessarily because they only ever believe they're right. they may also be insecure about their own position and unwilling to allow someone lower on the ladder to demonstrate superior knowledge, because that raises questions about whether they should be the senior staff member there.

  • fake frist (unregistered) in reply to Appalled

    He only locked the schema in source control so that only he can change it for future deployment.

    He hasn't locked the schema on the customer's copy of the database. So the customer is free to remove the triggers.

  • Guesty mcGuestface (unregistered) in reply to Appalled

    PHB is a reference to the incompetent Pointy Haired Boss from Dilbert

  • Me (unregistered)

    @David Key-value pairs.... [shudder]. The tell-tale sign of a dedicated WTFerer being let loose on a database. Not that it's entirely their fault: they've probably drunk the industry-wide Woo Kool-Aid that says "You don't need to understand databases any more! NoSQL, LINQ...". I don't wander about sticking my oar in to write dreadful webpage/C++ code (because I don't know enough to do it well), so why do these bozos think they can get a database right? In this place, the key-value pair idiocy made it into production, and has 10 millions rows of crap. With no indexes at all. I'm leaving tomorrow.

  • foxyshadis (unregistered) in reply to David

    Key-value is amazing if you have a database designed around it and an actual business case for it. Pretty damn useless otherwise.

    I suppose it can be handy if you're too lazy to figure out any of the relationships your data has until you get to the code, but in that case, any database design is going to suck.

  • Bb (unregistered)

    Honestly, just f*** people like Bob!

  • isthisunique (unregistered)

    I can never work with people this stupid I either leave or fight with them until someone is fired. Usually it's them. Actually it's never been me but if it were then it would probably be for the best.

  • Vince (unregistered)

    Multiple WTFs here. WTF1: Management allowing their coders (yes coders) to write crappy code that the performance guys then have to fix??? Obviously that has been an ongoing problem, so why not embed the performance guys with the regular developers? Some training might not be a bad idea either. WTF2: Henry not showing performance numbers before & after the mods to management/client? I would have expected an email along the lines of: From: Henry To : Bob CC: BIG BOSS Subject: RE> unauthorized database changes

    You are the one who doesn't know what he is talking about. Attached are the performance reports before and after the mods.

    WTF3: The "lead developer" Colin not overriding Bob. It's his job to handle this kind of situations. He should have told Bob to back off.

  • Randal L. Schwartz (github)

    A subtle WTF is still using VARCHAR when you've transitioned from MySQL to a real database, like PostgreSQL. The proper solution is TEXT for that column, as that will literally speed things up, since the DB won't have to keep testing how long the stored value is, so that it can throw an error on overflow. Something MySQL rarely does, ironically.

  • Mikey Dread (unregistered) in reply to David

    It's known as the Entity Attribute Value anti pattern, at least if applied across any significant part of a database.


    An example of a case it works for is if you are doing something like adding optional fields to a table dynamically e.g. selling cars, but without knowing what properties of the car you might wish to set up at design time, so you allow extra fields on top of the core fields, so salesmen or whoever can add spoiler angle or whatever ridiculous fields they dream up as a property to be reported on. The reporting is a little tricky of course, but feasible.

  • Carl Witthoft (google) in reply to Guesty mcGuestface

    Who says he's incompetent? Dilbert's PHB never gets fired, does nothing all day except hold meetings and write up performance reviews, and he gets paid a ton. Sounds like a great plan....

  • Developer Dude (unregistered) in reply to Discouraged


  • st33med (unregistered) in reply to Vince

    I think you missed the part where Bob is the manager. He himself decided he would do databases. So...

  • Alex (unregistered) in reply to Discouraged

    Some people are saying Dunning-Kruger, which is true, but it's also survivor bias: people willing to learn eventually stop being ignorant

  • (nodebb)

    Indices do improve performance. Unfortunately, they only improve query performance, which is pretty useless on a write-only table.

  • Harold (unregistered)

    I think part of this is made up, but I recognize the basic parts of it. My favorite was the index on a single character field that was varchar(1) and only had the value Y in it. A truly useless index, but insignificant so we did not fix it.

    The mismatch in data type for the joins was a significant performance problem, was essentially a typo, and was easily fixed through an alter command, although the process took a month or more.

  • a Nonnymas (unregistered) in reply to Ron Fox

    That Make America Grate Again guy?

  • /dev/null (unregistered)


    Problem solved :)

  • TheCPUWizard (unregistered)

    The "audit everything" is usually a sign of major troubles, but occasionally not. When it is needed, there are plenty of implementations (almost all of them asynchronous, yet still robust) that can handle many terabytes [petabytes database are becoming more common every day] without significant performance issues...

  • b.a. freeman (unregistered)

    needless to say (which is why it wasn't mentioned), colin was fired by bob for being a boob. bob then got a promotion, and colin couldn't get another job.

  • (nodebb)

    @SirTwist: Indexes don't always improve overall performance, since the database has to do extra work to keep them up to date. They don't even always improve query performance - I couldn't tell you how many times I've had to nudge the database towards a different query plan because it wanted to use an index that actually made things worse. In fact, the last time I did that was this morning.

    This is not as much of a problem as it used to be now that histograms are in common use, but even then it's possible for the optimiser to make a bad choice. Or, as in my case, the main database I pull data from doesn't have histograms collected because doing so somehow stuffs up performance for the front-end application. We can't modify the queries the front-end application submits but I can modify the queries I use (for loading the BI warehouse and various other systems), so I get to deal with the consequences.

  • (nodebb) in reply to Bb

    Bad idea. You don't want them breeding.

  • (nodebb) in reply to /dev/null

    YMMD :D But did they switch back to MySQL after trying PostgreSQL?

  • 나̵̵̛͍̬̘̭͉̗̲͈̭͇̳͖ͨ͐͌͌̆̔ͭ̽̾͛ͮ͑̓͞는̴̢̹͉̹̠̠̹̱̹͍̥̋̓̀̀̾͒̂͜͡ ̧̨̡̩̘͎̝̱̯͍̫͎̘̫̳͚̦̝̪̜̜ͩ̂̆͆̌͟끔̨́̊̅ͬ̔̌ͮ̿͜͜͏͏̫̠̜͖̰̖͚͈̤̫͉̭̤͙̥̠̝̼͕찍̛͚͇̹̮̲͂̋ͥͯ̽͛̈̂̈́ͨ̓ͨͮ̏̃̕한̴̵̢̡͉̳̲̱̫̣̼̩̲̖̰̯̺̘̮ͪ̏ͩ͆ͅ ̢̨͓̯̘̘̬͉̣̝̮̲̮̦̫ͣ̉̓̇̎ͨͩͨ̊̏͐̌̀̍ͩ͐̓̇́͟͠ͅ소̃ͩ̃̄̎ͬ̾̔́҉̧̭͔̳̹̪̲̬͓̥̹̻͎͜프̧̹̞͙̪̦̳̹͇̫ͥ́̆̎ͬ̌͐͞트̓̑͋ͭ̀̐̐̆̑̊ (unregistered)


  • Anonymous Coward (unregistered) in reply to Mikey Dread

    Everyone knows that if you don't know all the extra properties at design time, you add fields like: UserF1 varchar2(256), UserF2 varchar2(256), ... UserF99 varchar2(256)

    That way you can avoid the dreaded EAV anti-pattern.

  • QBall (unregistered) in reply to 나̵̵̛͍̬̘̭͉̗̲͈̭͇̳͖ͨ͐͌͌̆̔ͭ̽̾͛ͮ͑̓͞는̴̢̹͉̹̠̠̹̱̹͍̥̋̓̀̀̾͒̂͜͡ ̧̨̡̩̘͎̝̱̯͍̫͎̘̫̳͚̦̝̪̜̜ͩ̂̆͆̌͟끔̨́̊̅ͬ̔̌ͮ̿͜͜͏͏̫̠̜͖̰̖͚͈̤̫͉̭̤͙̥̠̝̼͕찍̛͚͇̹̮̲͂̋ͥͯ̽͛̈̂̈́ͨ̓ͨͮ̏̃̕한̴̵̢̡͉̳̲̱̫̣̼̩̲̖̰̯̺̘̮ͪ̏ͩ͆ͅ ̢̨͓̯̘̘̬͉̣̝̮̲̮̦̫ͣ̉̓̇̎ͨͩͨ̊̏͐̌̀̍ͩ͐̓̇́͟͠ͅ소̃ͩ̃̄̎ͬ̾̔́҉̧̭͔̳̹̪̲̬͓̥̹̻͎͜프̧̹̞͙̪̦̳̹͇̫ͥ́̆̎ͬ̌͐͞트̓̑͋ͭ̀̐̐̆̑̊

    Can somebody ban this troll?

  • LOL!!! (unregistered) in reply to QBall


  • GorGutz 'Ead 'Unta (unregistered)

    Oh look, matrix code spew all over the comments section. It at least took the edge off of a hilariously arrogant fool who reminds me of a person I know whom thinks you can port a 32 bit application into 64 bit just by hitting the 64 bit checkbox in whatever the fuck compiler he used and have zero issues.

  • Horse (unregistered)

    Stop horsing around

  • (nodebb) in reply to Scarlet_Manuka

    @Scarlet_Manuka, I'm guessing your using SQL Server. If so you might consider restoring the database to a different box, updating the stats there, and then you can export the stats objects back to the original server. Not only will your stats be kept relatively up to date, but you'll also be testing your restores. We do it here as we unfortunately have 10TB+ tables that not partitioned.....

  • (nodebb) in reply to Scarlet_Manuka

    @Scarlet_Manuka, I'm guessing your using SQL Server. If so you might consider restoring the database to a different box, updating the stats there, and then you can export the stats objects back to the original server. Not only will your stats be kept relatively up to date, but you'll also be testing your restores. We do it here as we unfortunately have 10TB+ tables that not partitioned.....

  • Anonymous (unregistered) in reply to 나̵̵̛͍̬̘̭͉̗̲͈̭͇̳͖ͨ͐͌͌̆̔ͭ̽̾͛ͮ͑̓͞는̴̢̹͉̹̠̠̹̱̹͍̥̋̓̀̀̾͒̂͜͡ ̧̨̡̩̘͎̝̱̯͍̫͎̘̫̳͚̦̝̪̜̜ͩ̂̆͆̌͟끔̨́̊̅ͬ̔̌ͮ̿͜͜͏͏̫̠̜͖̰̖͚͈̤̫͉̭̤͙̥̠̝̼͕찍̛͚͇̹̮̲͂̋ͥͯ̽͛̈̂̈́ͨ̓ͨͮ̏̃̕한̴̵̢̡͉̳̲̱̫̣̼̩̲̖̰̯̺̘̮ͪ̏ͩ͆ͅ ̢̨͓̯̘̘̬͉̣̝̮̲̮̦̫ͣ̉̓̇̎ͨͩͨ̊̏͐̌̀̍ͩ͐̓̇́͟͠ͅ소̃ͩ̃̄̎ͬ̾̔́҉̧̭͔̳̹̪̲̬͓̥̹̻͎͜프̧̹̞͙̪̦̳̹͇̫ͥ́̆̎ͬ̌͐͞트̓̑͋ͭ̀̐̐̆̑̊

    Oh hey, a perfect time to use my new ISO basic Latin bookmarklet...


    Well that was kinda disappointing...

  • Anonymous (unregistered) in reply to Anonymous

    Oh, now I see... it's hieroglyphics, which don't translate well into ISO basic Latin. A slight modification to just remove the Zalgo, and now...

    나는 끔찍한 소프트웨어 관행에서 세상을 구하려고 선택한 위대한 영웅이고 당신은 내 방식의하지 않는 경우에 당신은 내가 발견 한 다른 나쁜 프로그래밍처럼 될 것입니다 그리고 당신은 당신의 버그 체크 할 것이다.나는 끔찍한 소프트웨어 관행에서 세상을 구하려고 선택한 위대한 영웅이고 당신은 내 방식의하지 않는 경우에 당신은 내가 발견 한 다른 나쁜 프로그래밍처럼 될 것입니다 그리고 당신은 당신의 버그 체크 [snip]

    Google Translate says: "I'm in terrible software practices, a great hero chosen to save the world and you if you are not in my way, you will be just like any other bad programming I found and you will want to check your bug. I am the world from a terrible software practices If you choose to do a great hero and you are not of my old way you will be just like any other program I've found a bad and you check your bug [...]"

  • radarbob (unregistered)

    "Why is it that the most ignorant are the most recalcitrant?"

    The Dunning-Kruger Effect. - The inability of those of low ability to recognize their ineptitude and evaluate their ability accurately.

    A variation on the theme: The skill set required to fix a problem is the same as needed to recognize that a problem exists in the first place.

  • Dieter H. (unregistered)

    I have that to deal with at my current project. All the tables also keep some auditing data on top of that. Really fun, especially when the one who created it is also in charge and thinks it is the best thing since sliced bread.

Leave a comment on “Say "Y" to Indexes”

Log In or post as a guest

Replying to comment #:

« Return to Article