gpt4 book ai didi

mysql - 形成此查询的最佳方式

转载 作者:行者123 更新时间:2023-11-29 17:50:32 27 4
gpt4 key购买 nike

团队,

我有三张 table 。

myTransTable、myMasterTable 1、MymyMasterTable 2

myTransTable有很多条目,'Rank.No'自动递增字段是为了识别各个记录。 “U.Name”保存用户名。每个用户可以在此表中拥有多条记录。但按“U.Name”分组后,可以通过Rank.No的最大值找到用户最近的交易

一旦获取了最大记录(即最近的事务),就需要从其他表中获取相关数据

如何以最有效的方式做到这一点。

1.myTransTable(fields Rank.No(auto increment field),Name,RecNum,uname,date,type)

2.myMasterTable1 (RecNum,Recowner,recdate)

3.MymyMasterTable2 (uName,age ,address,contact num)

我尝试了这些方法来选择最大记录并从其他表中获取关联数据

  1. max records as a view and fetch data from other tables using normal query
  2. Max records and associated data itself as a view and select data as needed

哪种方法是获得最短执行时间的最佳方法?

我的疑问是找到最大值的最佳方法。

选项一

select a.`RecNum`,a.`Name`,a.`Date`, a.`type`"+
"from myTransTable a "+
"INNER JOIN "+
"(SELECT RecNumMAX(`Rank.No`) AS maxserialnum FROM myTransTable "+
"GROUP BY RecNumMAX)groupedRecNumMAX "+
" ON "+
" a.RecNum = groupedPWO.RecNum "+
"AND "+
"a.`Rank.No` = groupedRecNumMAX.maxserialnum "+

选项二

Select a.`RecNum`,a.`Name`,a.`Date`, a.`type`"+` 
FROM from myTransTable a

WHERE s.`RecNum` in(select MAX(`RecNum`)
from myTransTable
group by RecNum)

最佳答案

这只是与您的第一个查询相关的建议adn..似乎包含对表和列名称的错误引用

看看你的代码,你应该使用这样的查询

select a.`RecNum`
,a.`Name`
,a.`Date`
, a.`type`
from myTransTable a
INNER JOIN (
SELECT RecNum, MAX(`Rank.No`) AS maxserialnum
FROM myTransTable
GROUP BY RecNum
) g ON a.RecNum =g.RecNum AND a.`Rank.No` = g..maxserialnum

并且在RecNum上具有适当的索引..,并且Rank.No应该是性能最高的(您可以检查解释简单并进行适当的执行测试)

您不应该使用带有点分隔名称的列名称作为 Rank.No .. 使用 Rank_No isteand 并且对于列名称,首选小写而不是 UpperOrLower 大小写的混合,而是使用下划线来分隔单词

关于mysql - 形成此查询的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49399424/

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