如何在 Laravel 框架中以最少的时间浪费从数据库中取出一个普通数组中的所有单词?

2024-02-01

我想将数据库中的所有单词放入默认数组。我的数据库里有超过 50,000 个单词,这个数字很可能达到一百万。因此,我希望这个手术不需要花费太多时间。我尝试了这样的方法,其中不将任何单词放入通常的数组中。也就是说,单词被传递到关联数组:

$words = DB::table('words')->pluck('word');
dump($words);

Result:

Collection {#197 ▼
  #items: array:12 [▼
    0 => "тоҷик"
    1 => "ӯзбек"
    2 => "қирғиз"
    3 => "эрон"
    4 => "япон"
    5 => "англис"
    6 => "тоҷик"
    7 => "ӯзбек"
    8 => "қирғиз"
    9 => "эрон"
    10 => "япон"
    11 => "англис"
  ]
}

第二种方法:

$words = DB::select("SELECT `word` FROM `words`");
dump($words);

Result:

array:12 [▼
  0 => {#210 ▼
    +"word": "тоҷик"
  }
  1 => {#207 ▼
    +"word": "ӯзбек"
  }
  2 => {#209 ▼
    +"word": "қирғиз"
  }
  3 => {#206 ▼
    +"word": "эрон"
  }
  4 => {#208 ▼
    +"word": "япон"
  }
  5 => {#205 ▼
    +"word": "англис"
  }
  6 => {#204 ▼
    +"word": "тоҷик"
  }
  7 => {#203 ▼
    +"word": "ӯзбек"
  }
  8 => {#202 ▼
    +"word": "қирғиз"
  }
  9 => {#200 ▼
    +"word": "эрон"
  }
  10 => {#213 ▼
    +"word": "япон"
  }
  11 => {#214 ▼
    +"word": "англис"
  }
]

我想将这种形式的所有单词放入通常的数组中:

array:12 [▼
  0 => "тоҷик"
  1 => "ӯзбек"
  2 => "қирғиз"
  3 => "эрон"
  4 => "япон"
  5 => "англис"
  6 => "тоҷик"
  7 => "ӯзбек"
  8 => "қирғиз"
  9 => "эрон"
  10 => "япон"
  11 => "англис"
]

我需要这个来获取两个数组之间的差异。输入数组是一个乐观数组,因此我需要从低音中取出所有单词以添加到丰富的数组中。一般来说,有没有类似的功能array_diff()在 Laravel 框架本身?

$diff = array_diff($input_array, $words_from_db);

并将差异添加到数据库中:

foreach ($diff as $value) {
    DB::table('words')->insert(['word'=>$value]);
}

我向数据库添加大量单词(数据)的方法正确性如何?如果可能的话我是否需要优化?

一般来说,我从 Laravel 找到了这个函数:

public function diff($items)
{
    return new static(array_diff($this->items, $this->getArrayableItems($items)));
}

但我如何使用它来获取 diff 2 数组呢?输入数组将是来自数据库的默认数组和第二个数组字

预先感谢大家的回答,并请原谅我对问题中的语法错误表示歉意。


您可以完全在 MySQL 内部完成将唯一单词插入数据库,这应该总是比将所有单词拉入内存、比较它们并发送唯一值更快。

为此,您需要在单词列上添加唯一索引。 (参考:https://dev.mysql.com/doc/refman/5.7/en/create-index.html https://dev.mysql.com/doc/refman/5.7/en/create-index.html)

CREATE UNIQUE INDEX `idx_word` ON `db`.`words` (word);

然后在你的插入中你需要添加ON DUPLICATE KEY(Laravel 查询生成器不支持重复键 - 可以使用原始插入)参考:https://dev.mysql.com/doc/refman/5.7/en/insert-on-duplicate.html https://dev.mysql.com/doc/refman/5.7/en/insert-on-duplicate.html, https://laravel.com/docs/5.5/queries#raw-expressions https://laravel.com/docs/5.5/queries#raw-expressions

INSERT INTO word VALUES ('foo'),('bar') ON DUPLICATE KEY word = VALUES(word);

我会使用重复键而不是插入忽略。我认为插入忽略可能会隐藏与重复键无关的其他潜在问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Laravel 框架中以最少的时间浪费从数据库中取出一个普通数组中的所有单词? 的相关文章

  • 通过 __get() 通过引用返回 null

    快速规格 PHP 5 3 error reporting 1 the highest 我正在使用 get 通过引用技巧神奇地访问对象中任意深度的数组元素 快速示例 public function get key return isset t
  • SMTP 配置在生产中不起作用

    我正在尝试在提交表单时发送电子邮件 我正在使用 PHPMailer 使用以下配置发送邮件 mail new PHPMailer mail gt isSMTP mail gt Host mail example in mail gt Port
  • PHP 绑定“bigint”数据类型(MySQLi 准备好的语句)

    studentId 57004542323382 companyOfferId 7 sql INSERT INTO studentPlacement companyOfferId studentId VALUES if stmt db gt
  • .htaccess 异常导致主目录出现问题

    这是我的目录结构 localhost or livehost app bootstrap public vendor code demo 这是我的 htaccess
  • 为什么这会返回资源 id #2? [复制]

    这个问题在这里已经有答案了 可能的重复 我如何从 PHP 中的 MySql 响应中 回显 资源 id 6 https stackoverflow com questions 4290108 how do i echo a resource
  • 在 Laravel 5 中截断表

    描述 我有一个充满测试数据的表 有时 我想清除它以获取新数据 我可以在 DBMS 应用程序中执行截断 例如MySQL 工作台 但我试图在我的应用程序中实现它 Goal 创建一个按钮 单击时截断数据库中的表 这是我的步骤 1 声明一条路线 R
  • 负载平衡集群中的 PHP 会话 - 如何?

    好的 我得到了这个完全罕见的负载平衡 PHP 网站的独特场景 令人遗憾的是 它过去没有进行负载平衡 现在我们开始遇到问题 目前唯一的问题是 PHP 会话 当然 一开始没有人想到这个问题 因此 PHP 会话配置保留为默认值 因此 两台服务器都
  • 使用先前的反向引用作为命名捕获组的名称

    有没有办法使用对先前捕获组的反向引用作为捕获组的名称命名捕获组 这可能不可能 如果不可能 那么这就是一个有效的答案 下列 data description some description preg match data matches p
  • 如何阻止直接访问我的 JavaScript 文件?

    我使用 Minify 来缩小并缓存所有脚本请求 我只希望我的用户能够访问 JavaScript 文件的缩小版本 缩小位于www example com min我的脚本位于www example com scripts 如何阻止直接访问doc
  • 如何解码 eval( gzinflate( base64_decode(

    我已将此代码注入到我的网站中 如何解码尾随字符串 我需要知道发生了什么以及其背后的代码是什么 这应该输出将被执行的代码eval 我希望这就是您正在寻找的
  • 如何在 yii2 中使用两个不同的模型登录或切换身份类别?

    我想允许用户从两个不同的模型登录 配置文件 user gt identityClass gt app models User one more class here enableAutoLogin gt false authTimeout
  • fgetcsv 在特定行打开?

    有没有办法使用 fgetcsv 在特定行上打开 我有一个非常大的 csv 想通过 ajax 一次运行大约 100 行 我可以轻松停止 while 循环 但如何在特定行上打开 或者这是不可能的 从第 100 行开始读取没有简单的方法 但您可以
  • JavaScript 验证和 PHP 验证?

    我正在使用 jquery 验证插件来验证空表单 我还应该在 PHP 中检查一下以确保 100 正确吗 或者用 javascript 验证就可以了 谢谢 您应该始终在服务器上进行验证 如果用户以某种方式不使用 Javascript 提交表单
  • Sonata DateTimePickerType 类默认日期显示错误的日期时间格式

    我陷入困境 我不知道如何使用 sonata DateTimePickerType 类正确设置默认日期和时间 我尝试了不同的方法 但到目前为止 没有一种方法没有帮助 在下面的截图中 help 键显示正确的日期和时间 但是当我使用 dp 默认日
  • 这个条带请求是什么?为什么它会多次触发?

    对于使用 stripe 的 Laravel 应用程序 此请求https r stripe com 0被解雇多次 如下所示 我刷新主页后 这些请求立即被触发 问题是我最近得到了一个429 too many requests我的实时服务器出现错
  • PHP 数组通过 JSON 转为 jquery 数组

    我有点困惑为什么以下不起作用 get php
  • 如何从父类中获取子类名

    我试图在不需要子类上的函数的情况下完成此任务 这可能吗 我有一种感觉 但我真的很想确定
  • 如何在laravel中注册后自动登录

    我在 laravel 中注册用户时遇到问题 user假设是包含所有数组元素的数组 同时自动登录以下代码结果false 数据库中保存的密码是hash make password user id this gt user model gt ad
  • Laravel $request->file() 返回 null

    尝试在后端使用 Laravel 上传文件时遇到问题 Issue Laravel request gt file 方法返回 null Setup 我使用以下方法构建了一个 AJAX 请求超级代理人 https github com visio
  • 一种无需 JavaScript 即可在 PHP 中确定浏览器宽度的方法?

    首先有吗 或者我必须使用javascript 我希望能够更改使用的 CSS 因此 frex 我可以为移动设备或其他设备加载较小的字体 不幸的是 仅使用 PHP 无法检测用户分辨率 如果您使用 Javascript 则可以在 cookie 中

随机推荐

  • 会话到期时自动重定向[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 如何在会话过期时 自动 重定向页面
  • 范围更新后如何更新 angularjs 页面?

    我编写了一个捕获键盘事件的指令 并且在某些键上我更新了范围内的一些对象 这个想法是上下移动数组并显示所选行的详细信息 问题是 直到我执行另一个更新页面的操作后 页面才会更新 我怎样才能强迫这个 这是指令 LogApp directive k
  • Spark查询运行速度非常慢

    我在 AWS 上有一个集群 有 2 个从站和 1 个主站 所有实例的类型均为 m1 large 我正在运行 Spark 1 4 版本 我正在对来自红移的 400 万数据的 Spark 性能进行基准测试 我通过 pyspark shell 发
  • 我是否必须将 DB 连接/初始化放在 FCGI 循环之外才能利用 Perl 中的 FastCGI?

    假设我有一些 Perl 代码 每次命中时都会增加数据库特定行中的一列 并且我预计它会非常频繁地命中 因此我想使用 FCGI 对其进行优化 现在 我基本上将大部分代码包装在这样的内容中 while FCGI accept gt 0 code
  • 在 img 上进行 mousemove 后,Mouseup 不起作用

    我正在尝试做一个简单的拖动脚本 这个想法是在鼠标按下时保存位置 在鼠标移动时更新视图 并在鼠标抬起时停止 问题 mouseup 事件无法正常工作 看代码 var target a var pos 0 var dragging false d
  • 如何清除 Perl 哈希值

    假设我们像这样定义一个匿名哈希 my hash 然后使用哈希值 然后是时候清空或清除哈希值了 重复使用 经过一些谷歌搜索 我发现 hash and undef hash 两者都会满足我的需求 两者有什么区别 它们清空哈希的方法是否相同 ha
  • “mysqli_real_escape_string”是否足以避免 SQL 注入或其他 SQL 攻击? [复制]

    这个问题在这里已经有答案了 这是我的代码 email mysqli real escape string db con POST email psw mysqli real escape string db con POST psw que
  • 由谁决定 I/O 映射和内存映射 I/O (x86)

    在 x86 架构中 我们使用 I O 指令 例如 IN 和 OUT 来进行 I O 映射 I O 据我所知 我们在内存映射 I O 中使用 MOV 等内存指令 这一切都很好 但是谁决定使用哪种 I O 方法呢 如果我想构建自己的设备 外围设
  • JSF 2 AJAX - 重新加载整个 div (例如

    我正在使用 jsf2 并想使用它的 ajax 功能 问题 我已经见过一些ajax刷新的东西 但没有什么可以刷新整个div 我有一个 xhtml 页面 其中包含来自我的 bean 的数据 我真的不想刷新它的所有字段 刷新整个 ui inclu
  • Roslyn编译器已经集成到Mono项目中了吗?

    自从微软宣布开源 Net 以来 我一直对 C 和 Mono 很感兴趣 我想知道这个决定对 Mono 项目有多大影响 我假设现在这意味着微软不再试图关闭该项目 如果他们愿意的话 不会有任何潜在的危险 是的 罗斯林已被整合 来自文章莫诺和罗斯林
  • 错误 5:启动 Windows 服务时访问被拒绝

    当我尝试启动用 C 创建的 Windows 服务时 出现此错误 到目前为止我的代码 private ServiceHost host null public RightAccessHost InitializeComponent prote
  • 无法将 unicode .csv 读入 R

    我有一个 csv 文件 其中包含以下数据 1 10 2 20 我无法将其读入 R 以便列名像在文件中一样显示 d lt read csv Data 1 csv fileEncoding UTF 8 head d 产生以下内容 gt d lt
  • C++ 编译器错误 C2751 - 到底是什么原因导致的?

    我正在与C2751 https msdn microsoft com en us library 7w01cz7z aspx编译器错误 不太明白到底是什么原因导致的 下面的小代码会产生错误 include
  • 使用多处理并行运行 rpy2 会引发无法捕获的奇怪异常

    所以这是一个我无法解决的问题 我也不知道有什么好的方法可以制作MCVE 本质上已经简要讨论过here https stackoverflow com a 25175930 3765319但正如评论所示 存在一些分歧 最终的判决还没有出来 因
  • 如何在 R 中构建和测试多个模型

    假设我有一个像这样的数据集 忘记分布 modData lt data frame A rnorm 20 15 3 B rnorm 20 20 3 C rnorm 20 25 3 X rnorm 20 5 1 如果我使用X作为预测者 A Ba
  • 如何使用输入重定向回表单 - Laravel 5

    如何使用给定的内容重定向回我的表单页面POSTparams 如果我的表单操作抛出异常 您可以使用以下内容 return Redirect back gt withInput Input all 如果您正在使用表单请求验证 http lara
  • CORS 策略阻止从源“null”访问“file:///sample.txt”处的 XMLHttpRequest:仅协议方案支持 CORS [重复]

    这个问题在这里已经有答案了 我是 AJAX 新手 目前正在学习它的基础知识 在我的 html 文件中 点击提交按钮时 我只是尝试记录与 html 文件本身位于同一目录中的文本文件的文本 但我收到了一个错误 从源 null 访问 file D
  • 如何交替选择每两个元素?

    我想选择每两行并以该模式交替和重复 我如何使用 CSS 来做到这一点 例如 蓝色行 1 2 5 6 9 10 红行 3 4 7 8 ul list style type none color white li nth of type odd
  • Sybase SQL 基于具有 ID 的多个列选择不同

    我正在尝试查询 sybase 服务器以获取我们出于测试目的而保存的不同类型数据的示例 我有一张如下所示的表格 摘要 Animals table id type breed name 1 dog german shepard Bernie 2
  • 如何在 Laravel 框架中以最少的时间浪费从数据库中取出一个普通数组中的所有单词?

    我想将数据库中的所有单词放入默认数组 我的数据库里有超过 50 000 个单词 这个数字很可能达到一百万 因此 我希望这个手术不需要花费太多时间 我尝试了这样的方法 其中不将任何单词放入通常的数组中 也就是说 单词被传递到关联数组 word