Commande SQL INSERT

Lorsque vous utilisez un SQL INSERT, est-ce important si vous ignorez l'ordre d'affichage des colonnes dans la database?

|-----------------------| | id | derp | foo | bar | |-----------------------| | 1 |"herp"|"bar"| 88 | |-----------------------| 

Donc l'ordre dans SQL Server (spécifiquement 2008) est id, derp, foo, bar. (Supposons que id est PK, et auto-incrémenté)

Donc, je voudrais écrire un peu comme ça:

 INSERT INTO table_name (foo, bar, derp) VALUES (42, "troll", "lolz"); 

Normalement je l'écrirais bien sûr comme:

 INSERT INTO table_name (derp, foo, bar) VALUES ("lolz","troll", 42); 

Maintenant, cela peut être la micro-optimization, mais je suis curieux de savoir si l'insertion hors de l'ordre des colonnes va ralentir ma requête du tout?

Ce genre de chose ne devrait pas avoir d'importance, car SQL est censé être déclaratif par nature: vous indiquez à la database ce que vous voulez, et cela détermine la meilleure façon d'y parvenir.

Bien sûr, il y a des exceptions à cela, sinon il n'y aurait pas besoin de conseils d'optimiseur et autres. Mais la tendance – généralement parlant – est de ne pas avoir à s'inquiéter des fonctionnements plus fins de la database, pour vous libérer, le développeur, pour d'autres tâches.

eg tablespaces auto-gérés, partitions assignées automatiquement (toutes deux disponibles dans Oracle)

CEPENDANT …. comme nous devons apprendre à faire face à des couches d'abstraction sans cesse croissantes, et comme ces abstractions contiennent souvent des fuites (quand elles ne fonctionnent pas à 100% comme prévu), alors, de time en time, il faut pour comprendre ce qui se passe dans les coulisses. Si vous êtes capable de faire cela, ou si vous savez comment find des informations sur la façon de le faire (presque aussi bon!), Cela vous sera très utile.

Pour cette raison, je peux vous reorder cet excellent essai de Joel Spolsky:

http://www.joelonsoftware.com/articles/LeakyAbstractions.html

La loi des abstractions qui fuit signifie que chaque fois que quelqu'un arrive avec un nouvel outil de génération de code wizzy qui est censé nous rendre tous très efficaces, vous entendez beaucoup de gens dire "apprendre à le faire manuellement d'abord, puis utiliser l'outil wizzy pour gagner du time. " Les outils de génération de code qui prétendent faire abstraction de quelque chose, comme toutes les abstractions, fuient, et la seule façon de traiter les fuites avec compétence est d'apprendre comment fonctionnent les abstractions et ce qu'elles extraient. Ainsi, les abstractions nous font gagner du time, mais elles ne nous font pas gagner du time.

Et tout cela signifie paradoxalement, même si nous avons des outils de programmation de niveau supérieur et supérieur avec des abstractions de mieux en mieux, devenir un programmeur compétent devient de plus en plus difficile .