Php 在SQL查询中正确使用索引
我对使用SQL有点陌生,我正在尝试运行一个查询,比较两个单独表中的两个值。我已经为正在使用的列编制了索引,但我不完全确定索引是如何工作的。我将它嵌入到PHP中,目前在我尝试运行查询时需要很长时间(有时甚至超时)。这两个表中每个表大约有25万行,因此查询应该不会太大。这是我的密码:Php 在SQL查询中正确使用索引,php,sql,indexing,Php,Sql,Indexing,我对使用SQL有点陌生,我正在尝试运行一个查询,比较两个单独表中的两个值。我已经为正在使用的列编制了索引,但我不完全确定索引是如何工作的。我将它嵌入到PHP中,目前在我尝试运行查询时需要很长时间(有时甚至超时)。这两个表中每个表大约有25万行,因此查询应该不会太大。这是我的密码: $users1 = mysql_num_rows(mysql_query("SELECT DISTINCT idtracker.uuid FROM idtracker, download_tracker WH
$users1 = mysql_num_rows(mysql_query("SELECT DISTINCT idtracker.uuid
FROM idtracker, download_tracker
WHERE idtracker.uuid = download_tracker.pluginId
&& idtracker.date > (NOW() - (2000000))", $con));
我不确定直接比较两行是否非常有效,就像我在这里做的那样。如果我能深入了解如何提高查询速度,那将非常有帮助
谢谢
-Ryan在进行任何真正的测试/优化之前,您需要修复查询:
idtracker.date > (NOW() - (2000000))
这是错误的
如果您的
idtracker.date
属于date
或DATETIME
类型,并且希望将其与另一个日期进行比较(NOW()
减去某个日期),则需要使用mysql函数或类似的函数。您是否尝试过使用联接?我的日期字段目前是时间戳类型。我在网上查看,似乎每个使用DATE_ADD的人都在使用DATE或DATETIME类型。使用时间戳类型的查询的工作方式与我希望的相同,对于我正在执行的作业,将类型更改为DATE或DATETIME是否更有效/更值得?@Raj3m8不,时间戳,可以,但您不能仅从中减去整数,您需要使用de-mysql日期/时间函数。