快速处理函数以 quick 开头,为实现快速执行,未预编译SQL。
> 如果您需要快速处理海量数据,一定需要使用 quick + 批量函数,项目实践中,quick 类函数一般每分钟能处理 100 万条以上的数据。
快速处理函数与常规函数调用方式完全一致,对应关系如下:
| 快速处理函数| 对应常规函数|
|-|-|
|快速插入(quickInsert)| 插入(insert)|
|快速更新(quckUpdate)| 更新(update)|
|快速替换(quickReplace)| 替换(replace)|
|快速批量更新(quckUpdateMany)| 批量更新(updateMany)|
|快速批量插入(quickInsertMany)| 批量插入(insertMany)|
|快速批量替换(quickReplaceMany)| 批量替换(replaceMany)|
MYSQL原生不支持快速批量更新,底层使用 case when 实现。
### 示例
~~~
$objs = [];
$obj1 = new stdClass();
$obj1->id = 1;
$obj1->name = '马云';
$obj1->age = '60';
$objs[] = $obj1;
$obj2 = new stdClass();
$obj1->id = 2;
$obj2->name = '刘强东';
$obj1->age = '50';
$objs[] = $obj2;
Be::getDb()->quickUpdateMany('user', $objs);
~~~
### 二维数组方式
~~~
$arrs = [
[
'id' => 1,
'name' => '马云',
'age' => '60',
],
[
'id' => 1,
'name' => '刘强东',
'age' => '50',
]
];
Be::getDb()->quickUpdateMany('user', $arrs);
~~~
上面的例子最终生成的 SQL 如下:
```
UPDATE
`user`
SET
`name` = CASE `id` WHEN '1' THEN '马云' WHEN '2' THEN '刘强东' END,
`age` = CASE `id` WHEN '1' THEN '60' WHEN '2' THEN '50' END
WHERE
`id` IN('1', '2')
```
- 系统介绍
- 安装
- 核心工厂(Be)
- 数据库(Db)
- 配置文件
- 连接多个库
- 获取多条记录
- 对象数组(getObjects)
- 二维数组(getArrays)
- 一维数组形式(getValues)
- 获取带索引的多条记录
- 对象数组(getKeyObjects)
- 二维数组(getKeyArrays)
- 键值对(getKeyValues)
- 获取迭代器形式的多条记录
- 对象数组(getYieldObjects)
- 二维数组(getYieldArrays)
- 单列数组(getYieldValues)
- 获取单条记录
- 对象形式(getObject)
- 数组形式(getArray)
- 单个值(getValue)
- 插入/更新/替换
- 插入(insert)
- 批量插入(insertMany)
- 更新(update)
- 批量更新(updateMany)
- 替换(replace)
- 批量替换(replaceMany)
- 快速处理(quick***)
- 其它
- 防注入
- 执行SQL
- 事务/异常处理
- 表模型(Table)
- 条件查询(where)
- 获取多条记录
- 对象数组(getObjects)
- 二维数组(getArrays)
- 获取带索引的多条记录
- 对象数组(getKeyObjects)
- 获取迭代器形式的多条记录
- 联表查询
- 左连接(leftJoin)
- 右连接(rightJoin)
- 内连接(innerJoin)
- 聚合
- 求和(sum)
- 汇总(count)
- 最小值(min)
- 最大值(max)
- 平均值(avg)
- 其它
- 行模型(Tuple)
- 缓存(Cache)
- 配置文件
- 如何使用
- 会话(Session)
- 配置文件
- 如何使用
- Cookie
- 主题、模板
- 主题/模板结构
- 模板继承
- 模板包含
- 注解
- 配置文件
- 配置项驱动:整型
- 配置项驱动:字符
- 控制器权限
- 扩展(Plugin)