关于去年三月份我的一个疑问被解开的事情

image.png(45.52 KB)

我以为没什么好办法解决,其实当时 @大尨 已经给出解决办法,只是我才疏学浅,没有理解,平时也不怎么写代码就搁置了

前几天在处理一些数据的时候,发现单字段索引和组合索引对于查询速度的影响,正好现在gpt盛行,于是一通问答

然后就想起了去年这个问题

以下来自chatgpt的解答:

在thinkphp5中,可以使用Db类的`insertAll()`方法一次性插入多条数据到数据库。同时,可以使用数据库的"唯一索引"机制来判断是否存在重复数据,如果存在则忽略。

以下是一个示例代码,假设要向`user`表中插入1000条数据,其中`name`和`age`字段组成唯一索引(即两个字段的组合值必须唯一),如果已经存在相同的记录,则忽略:

php
// 假设已经有一个$users数组,其中包含1000条要插入的数据
$users = [
    ['name' => 'Alice', 'age' => 20],
    ['name' => 'Bob', 'age' => 25],
    // ...
];

// 获取数据库连接对象
$db = db('user');

// 开始事务
$db->startTrans();

try {
    // 使用insertAll()方法插入数据,并设置ignore选项为true
    // ignore选项表示如果出现重复数据(即唯一索引冲突),则忽略该条数据
    $result = $db->insertAll($users, true);

    // 提交事务
    $db->commit();

    if ($result) {
        // 插入成功
        echo '插入成功';
    } else {
        // 插入失败
        echo '插入失败';
    }
} catch (\Exception $e) {
    // 回滚事务
    $db->rollback();
    // 输出错误信息
    echo '插入失败:' . $e->getMessage();
}
在上述代码中,`insertAll()`方法的第二个参数设置为`true`,表示使用"忽略"选项(即如果出现重复数据,则忽略该条数据)。如果该参数设置为`false`(默认值),则会抛出异常,表示唯一索引冲突。

随即就做了索引尝试
image.png(27.04 KB)

虽然现在用不到了,但是不妨碍我学到了

回复列表(0|隐藏机器人聊天)
帖子没有回复
添加新回复
回复需要登录