Une comparaison des constructeurs de requêtes SQL GO populaires. Fournit la liste des fonctionnalités et les repères
fonctionnalité | DBR | écureuil | sqrl | goqu |
---|---|---|---|---|
Selectbuilder | + | + | + | + |
Insertbuilder | + | + | + | + |
Mise à jour | + | + | + | + |
Deletebuilder | + | + | + | + |
Support postgresql | + | + | + | |
Espaces réservés personnalisés | + | + | + | |
Rejoint le soutien | + | + | + | |
Sous-requête dans le constructeur de requêtes | + | + | + | |
Alias pour les colonnes | + | + | + | |
Expression de cas | + | + | + |
Quelques explications ici:
Custom placeholders
- Capacité à utiliser non seulement ?
espaces réservés, utiles pour PostgreSQLJOINs support
- Capacité à construire des jointures dans des requêtes de sélection comme Select("*").From("a").Join("b")
Subquery in query builder
- Lorsque vous préparez une sous-requête avec un constructeur, puis passez-le à un autre. Quelque chose comme: subQ := Select ( "aa" , "bb" ). From ( "dd" )
qb := Select (). Column ( subQ ). From ( "a" )
Aliases for columns
- moyen facile d'alias une colonne, surtout si la colonne est spécifiée par la sous-requête: subQ := Select ( "aa" , "bb" ). From ( "dd" )
qb := Select (). Column ( Alias ( subQ , "alias" )). From ( "a" )
CASE expression
- sucre syntaxtique pour les expressions de cas go test -bench=. -benchmem | column -t
sur 2,6 GHz i5 MacBook Pro:
BenchmarkDbrSelectSimple 500000 2610 ns/op 864 B/op 14 allocs/op
BenchmarkDbrSelectConditional 500000 3808 ns/op 1031 B/op 19 allocs/op
BenchmarkDbrSelectComplex 200000 11585 ns/op 3323 B/op 53 allocs/op
BenchmarkDbrSelectSubquery 200000 10025 ns/op 2851 B/op 40 allocs/op
BenchmarkDbrInsert 500000 3717 ns/op 1136 B/op 19 allocs/op
BenchmarkDbrUpdateSetColumns 300000 4106 ns/op 1038 B/op 24 allocs/op
BenchmarkDbrUpdateSetMap 300000 5396 ns/op 1388 B/op 26 allocs/op
BenchmarkDbrDelete 1000000 2150 ns/op 482 B/op 13 allocs/op
BenchmarkGoquSelectSimple 100000 15180 ns/op 3282 B/op 46 allocs/op
BenchmarkGoquSelectConditional 100000 19655 ns/op 4258 B/op 61 allocs/op
BenchmarkGoquSelectComplex 30000 50628 ns/op 11414 B/op 215 allocs/op
BenchmarkSqrlSelectSimple 500000 3555 ns/op 952 B/op 15 allocs/op
BenchmarkSqrlSelectConditional 300000 4377 ns/op 1112 B/op 20 allocs/op
BenchmarkSqrlSelectComplex 100000 24040 ns/op 4751 B/op 100 allocs/op
BenchmarkSqrlSelectSubquery 100000 26203 ns/op 3560 B/op 67 allocs/op
BenchmarkSqrlSelectMoreComplex 30000 47018 ns/op 7256 B/op 150 allocs/op
BenchmarkSqrlInsert 200000 7773 ns/op 1304 B/op 25 allocs/op
BenchmarkSqrlUpdateSetColumns 200000 8633 ns/op 1369 B/op 32 allocs/op
BenchmarkSqrlUpdateSetMap 200000 15786 ns/op 1788 B/op 36 allocs/op
BenchmarkSqrlDelete 500000 3669 ns/op 496 B/op 12 allocs/op
BenchmarkSquirrelSelectSimple 100000 14934 ns/op 2737 B/op 52 allocs/op
BenchmarkSquirrelSelectConditional 100000 18034 ns/op 4023 B/op 84 allocs/op
BenchmarkSquirrelSelectComplex 20000 63096 ns/op 12742 B/op 283 allocs/op
BenchmarkSquirrelSelectSubquery 30000 48956 ns/op 9954 B/op 206 allocs/op
BenchmarkSquirrelSelectMoreComplex 20000 83842 ns/op 17153 B/op 386 allocs/op
BenchmarkSquirrelInsert 100000 14517 ns/op 3356 B/op 75 allocs/op
BenchmarkSquirrelUpdateSetColumns 100000 23995 ns/op 4787 B/op 108 allocs/op
BenchmarkSquirrelUpdateSetMap 50000 27141 ns/op 5203 B/op 112 allocs/op
BenchmarkSquirrelDelete 100000 16728 ns/op 2815 B/op 67 allocs/op
Si vos requêtes sont très simples, choisissez dbr
, la plus rapide.
Si vous avez vraiment besoin d'immutabilité du constructeur de requêtes et que vous êtes prêt à sacrifier la mémoire supplémentaire, utilisez squirrel
, le plus lent mais le plus fiable.
Si vous aimez ces aides douces que squirrel
offre pour faciliter votre bâtiment de requête ou si vous prévoyez d'utiliser le même constructeur pour PostgreSQL
, prenez sqrl
car il est équilibré entre les performances et les fonctionnalités.
goqu
a beaucoup de fonctionnalités et de façons de construire des requêtes. Bien qu'il nécessite une connexion SQL STCH si vous avez besoin de créer une requête. Cela peut être fait avec SQLMock. Inconvénient: le constructeur est lent et a trop de fonctionnalités, donc la construction d'une requête peut devenir un cauchemar. Mais si vous avez besoin d'un contrôle total sur tout - c'est votre choix.