【发布时间】:2014-06-11 19:22:46
【问题描述】:
我需要一些 SQL 帮助。我有一个 SELECT 语句,它引用了几个表并挂在 MySQL 数据库中。我想知道是否有更好的方法来编写这个语句,以便它有效地运行并且不会挂起数据库?任何帮助/方向将不胜感激。谢谢。
代码如下:
Select Max(b.BurID) As BurID
From My.AppTable a,
My.AddressTable c,
My.BurTable b
Where a.AppID = c.AppID
And c.AppID = b.AppID
And (a.Forename = 'Bugs'
And a.Surname = 'Bunny'
And a.DOB = '1936-01-16'
And c.PostcodeAnywhereBuildingNumber = '999'
And c.PostcodeAnywherePostcode = 'SK99 9Q9'
And c.isPrimary = 1
And b.ErrorInd <> 1
And DateDiff(CurDate(), a.ApplicationDate) <= 30)
日志中没有mysql错误。对不起。
【问题讨论】:
-
确保在连接中使用的所有列都有索引。此外,虽然它对性能没有影响,但请尝试编写显式连接而不是隐式连接。
-
你可以让你的日期依赖条件sargable。
-
我很难相信这个查询会花很长时间。可能还有其他事情发生。也许桌子被锁定了?检查是否还有其他打开的连接。
标签: mysql sql database-performance