快速處理函數以 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)