gpt4 book ai didi

PHP MYSQL- 使用索引?在这种情况下可能吗?

转载 作者:太空宇宙 更新时间:2023-11-03 10:37:49 25 4
gpt4 key购买 nike

我的mysql数据库结构如下:

enter image description here

当我对它运行一个简单的查询时,执行最多需要 30 秒。查询是 -

SELECT signinid,photo,first_name,last_name,persontosee,signindate,signintime,isstaff,signouttime,signoutdate,issignedin,companyname,veh_reg 
FROM signin_entries
WHERE issignedin ='YES'
AND isstaff='YES'

当我对此运行 EXPLAIN 时,我可以看到它正在处理所有 1180 行,问题是列、照片、签名和二维码都包含 base64 编码的字符串。 (尽管在我的选择语句中我只查询“照片”)

我如何为此创建索引?索引甚至是正确的方法吗?为什么执行简单查询最多需要 30 秒?

谢谢你的时间

Explain statement

最佳答案

您当前的结构存在多个问题:

  • 您应该为列使用尽可能小的类型,例如enum 用于具有一些固定可能值(“yes”、“no”、“maybe”)的列,或者更简单的 boolean 用于“yes”/“no”列。
  • 您不应将时间存储在 varchar 列中,而应将其存储在 timetimestamp 中。
  • 也许您应该将现有的 date 列转换为 datetime,因为您可能还希望存储时间。
  • 除非有充分的理由,否则不应将二进制数据存储在数据库中。

修复所有问题后,您可以在两列上添加组合索引以进一步缩短执行时间:

CREATE INDEX issignedinandstaff ON signin_entries (issignedin, isstaff)

关于PHP MYSQL- 使用索引?在这种情况下可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44717287/

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