Der Index geht zwar schneller, aber wenn du z.B. mal am
SQL was veränderst, dann ändert sich auch der Index, aber über den Namen gibt es niemals Probleme und im Code siehst auch schneller wo auf was zugegriffen wird.
Man nimmt ja auch meistens FieldByName und nicht Fields, wenn man auf die Felder zugreift.
Fallen gelassen wird nichts.
Der Parser geht von vorne nach hinden durch den String und die Parameter werden in der Reihenfolge in die Liste eingetragen, wie sie gefunden werden.
Kommt ein Parameter mehrmals im String vor, dann steht natürlich nur der "erste" Fund an seiner Stelle in der Liste und die nachfolgenden Funde werden nicht nochmal angehängt, da der Parameter dann ja schon existiert.
SELECT :a, :b, :a, :c
Delphi-Quellcode:
Params[0] = ParamByName('a')
Params[1] = ParamByName('b')
Params[2] = ParamByName('c')
SELECT :c, :b, :a, :a
Delphi-Quellcode:
Params[2] = ParamByName('a')
Params[1] = ParamByName('b')
Params[0] = ParamByName('c')