经过本人实测,采用预处理,性能提升大约接近10%。
关于预处理的介绍,网上资料很多,总体关心优点有如下:
预处理优点
- 预处理语句大大减少了分析时间,只做了一次查询(虽然语句多次执行);
- 绑定参数减少了服务器带宽,只需发送查询的参数,而不是整个语句;
- 预处理语句针对 SQL 注入是非常有用的,因为参数值发送后使用不同的协议,保证了数据的合法性。
测试代码:
package main
import (
_ "github.com/go-sql-driver/mysql"
"fmt"
"database/sql"
"time"
"flag"
"math/rand"
)
const (
USERNAME = "root"
PASSWORD = "123456"
NETWORK = "tcp"
SERVER = "localhost"
PORT = 3306
DATABASE = "code369_account"
)
type Account struct {
ID uint64 `gorm:"AUTO_INCREMENT" redis:"id"` // 内部唯一ID, 自增
Account string `gorm:"size:32;uniqu