fix(perf): Fixed performance
* Performance are better when you write columns byte by byte rather than string generation
This commit is contained in:
@@ -10,7 +10,6 @@ package qb
|
|||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"fmt"
|
"fmt"
|
||||||
"strings"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// Order specifies sorting order.
|
// Order specifies sorting order.
|
||||||
@@ -54,7 +53,11 @@ func (b *SelectBuilder) ToCql() (stmt string, names []string) {
|
|||||||
cql.WriteString("DISTINCT ")
|
cql.WriteString("DISTINCT ")
|
||||||
b.distinct.writeCql(&cql)
|
b.distinct.writeCql(&cql)
|
||||||
case len(b.groupBy) > 0:
|
case len(b.groupBy) > 0:
|
||||||
cql.WriteString(strings.Join(append(b.groupBy, b.columns...), ","))
|
b.groupBy.writeCql(&cql)
|
||||||
|
if len(b.columns) != 0 {
|
||||||
|
cql.WriteByte(',')
|
||||||
|
b.columns.writeCql(&cql)
|
||||||
|
}
|
||||||
case len(b.columns) == 0:
|
case len(b.columns) == 0:
|
||||||
cql.WriteByte('*')
|
cql.WriteByte('*')
|
||||||
default:
|
default:
|
||||||
|
|||||||
@@ -6,7 +6,6 @@ package qb
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"strings"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// placeholders returns a string with count ? placeholders joined with commas.
|
// placeholders returns a string with count ? placeholders joined with commas.
|
||||||
@@ -25,5 +24,10 @@ func placeholders(cql *bytes.Buffer, count int) {
|
|||||||
type columns []string
|
type columns []string
|
||||||
|
|
||||||
func (cols columns) writeCql(cql *bytes.Buffer) {
|
func (cols columns) writeCql(cql *bytes.Buffer) {
|
||||||
cql.WriteString(strings.Join(cols, ","))
|
for i, c := range cols {
|
||||||
|
cql.WriteString(c)
|
||||||
|
if i < len(cols)-1 {
|
||||||
|
cql.WriteByte(',')
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user