gpt4 book ai didi

mysql - 正确构建有关电话的 sql 表

转载 作者:行者123 更新时间:2023-11-30 00:06:36 25 4
gpt4 key购买 nike

我有一个数据库(更像是我想构建它),我将在其中保存电话数据。首先我要说的是,我每周将导入 10.000 个电话,想象一下数百万条记录。到目前为止我有这些字段。

id -> int unsigned auto_increment
date_and_time -> int unsigned
duration -> smallInt unsigned
type -> tinyInt unsigned
calling_id -> int unsigned
called_id -> int unsinged

主叫和被叫 ID 引用电话号码表。我需要帮助的是这个。我在 php 中有一个类,它检查调用是否已经存在,如果不存在则插入它。所以我需要最快的方法来查询现有的调用。

我有 date_and_time、calling_id 和 returned_id 的索引,以及 Calling_id、called_id 和 date_and_time 的索引。

目前我只使用

SELECT * FROM communications WHERE calling_id = :cngID AND called_id = :cdId AND date_and_time = :dnt

有没有办法可以先搜索日期,如果找到,则检查主叫 ID 和被叫 ID 是否匹配。我知道我可以使用两个查询,但我只是想知道哪一个是最快的方法。我对 sql 很陌生,所以我想知道是否有一个复杂的查询比我的简单 SELECT 查询运行得更快,或者两个查询是否也可以运行得更快。

任何见解提前致谢

最佳答案

一般来说,您可以指定要查询的内容,并由您的数据库系统确定如何获取数据。因此,您指定条件,RDBS 就会优化查询以尽可能快地执行它。这很可能意味着如果存在合适的索引,它将首先按日期和时间进行搜索。 EXPLAIN 命令可用于查看执行计划,其中 mysql 实际上告诉您它正在做什么以及按什么顺序进行。

也就是说,有一些方法可以强制测试按给定的顺序进行。您可以滥用 HAVING 子句,或者可以嵌套查询,或者类似的东西。但我建议不要这样做,特别是如果您是初学者。

关于mysql - 正确构建有关电话的 sql 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24492230/

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