golang sql builder benchmark
1.0.0
一般的なGO SQLクエリビルダーの比較。機能リストとベンチマークを提供します
特徴 | DBR | リス | SQRL | goqu |
---|---|---|---|---|
SelectBuilder | + | + | + | + |
INSERTBUILDER | + | + | + | + |
updatebuilder | + | + | + | + |
DeleteBuilder | + | + | + | + |
PostgreSQLサポート | + | + | + | |
カスタムプレースホルダー | + | + | + | |
サポートに参加します | + | + | + | |
クエリビルダーのサブクエリ | + | + | + | |
列のエイリアス | + | + | + | |
症例表現 | + | + | + |
ここでいくつかの説明:
Custom placeholders
- 使用するだけでなく使用する能力?
プレースホルダー、PostgreSQLに役立ちますSelect("*").From("a").Join("b")
JOINs support
Subquery in query builder
- 1つのビルダーとサブクエリを準備してから、別のビルダーに渡すとき。次のようなもの: subQ := Select ( "aa" , "bb" ). From ( "dd" )
qb := Select (). Column ( subQ ). From ( "a" )
Aliases for columns
- 特に列がサブクエリによって指定されている場合、列をエイリアスする簡単な方法: subQ := Select ( "aa" , "bb" ). From ( "dd" )
qb := Select (). Column ( Alias ( subQ , "alias" )). From ( "a" )
CASE expression
- 症例表現の構文糖go test -bench=. -benchmem | column -t
2.6 GHz I5 MacBook Proのgo test -bench=. -benchmem | column -t
:
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
クエリが非常にシンプルな場合は、最速のdbr
選択してください。
クエリビルダーの不変性が本当に必要で、余分なメモリを犠牲にする準備ができている場合は、最も遅いが信頼性のsquirrel
リスを使用してください。
squirrel
クエリビルディングを容易にするために提供する甘いヘルパーが気に入っている場合、またはPostgreSQL
に同じビルダーを使用する予定がある場合は、パフォーマンスと機能のバランスが取れているため、 sqrl
使用してください。
goqu
クエリを構築するための多くの機能と方法があります。ただし、クエリを作成するだけで、SQL接続をスタブが必要です。 SQLMockで行うことができます。欠点:ビルダーは遅く、機能が多すぎるため、クエリを構築することは悪夢になる可能性があります。しかし、すべてを完全に制御する必要がある場合 - これはあなたの選択です。