gpt4 book ai didi

PHP if 与 MySQLWhere 比较(哪个更高效)

转载 作者:行者123 更新时间:2023-11-29 20:58:49 25 4
gpt4 key购买 nike

我的情况:我的网站将在 Cookie 中查找“记住我” token 和用户 ID。如果 cookie 存在,它将对其进行反哈希处理并查找用户 ID 并比较 token 。带有“WHERE userid = '' and Rememberme = ''”。

我的问题是:MySQL 是否会针对唯一用户 ID 优化此查询,以便查询不会扫描整个数据库来查找此 20 多个字符的标记?或者我应该从数据库中选择 token ,然后使用 php if 比较来检查 token 是否相同?

简而言之(tl;dr):最好检查 token 是否与 MySQL 选择查询匹配,或者从数据库中获取所有 token 并将值与php if 条件?

谢谢!

最佳答案

简单答案:

是的,只要您在 WHERE ... 部分中搜索的变量被索引,数据库肯定会乐观地支持您的搜索!如果您担心性能,您绝对不应该通过 SQL 检索所有信息,然后执行 PHP 条件。

因此,如果表中的 id 列未建立索引,您应该为其建立索引。如果您假设...表中已有 100 万行,并运行诸如 SELECT * FROM user WHERE id = 994321 这样的命令,您将看到性能的明显提高。

详细说明:

数据库(如 MySQL)执行查询/命令的速度比您预期在 php 中发生的速度要快得多。在您的具体情况下,假设您正在执行以下 SQL 语句:

$sql = "SELECT * FROM users WHERE id = 4";

如果您有 100 万个用户,并且 id 列未建立索引,MySQL 将遍历所有 100 万个用户以查找所有 id = 4 的行。然而,如果它被索引,MySQL 会(在幕后)创建一个称为 b 树的东西,它的工作原理与字典索引的工作原理类似。

如果您尝试在字典中慢慢找到世界,您可能会从中间打开书本,找到以字母M开头的单词,然后查找再次在右侧页面的中间,希望找到更接近S的字母。这种查找单词的方法比从头一页一页地查看要快得多。

正是出于这个原因,MySQL 创建了索引来提高性能,并且绝对应该利用此功能来帮助提高查询速度。

关于PHP if 与 MySQLWhere 比较(哪个更高效),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37401177/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com