我有两个表,其中一个匹配评级的id,其中一个id为15个实际数据的id。在数据表中,id列有一个索引,并且在收视表中,id是主键,并且评级被索引。我想选择数据,但只能从具有正评级的行中选择数据。这样做,我使用的查询MYSQL需要一个更快的查询
SELECT * FROM data_table
INNER JOIN rating_table ON data_table.id = rating_table.id
WHERE rating > 0
但由于某种原因,这是服用约0.35秒,这似乎很长我。数据表中大约有90,000行,评级表中大约有5000行,这需要比甚至十分之一秒还要少得多......我如何以不同的方式进行索引或以不同的方式进行查询以加快此任务的速度?
编辑: 分析后,它给了我以下。请注意,我认为这是缓存,以便查询回来的速度远远超过以前,但即使如此,这可能是有人
0.000012 starting
0.000053 checking query cache for query
0.000014 Opening tables
0.000006 System lock
0.000027 Table lock
0.000044 init
0.000018 optimizing
0.000060 statistics
0.000016 preparing
0.000004 executing
0.004916 Sending data
0.000007 end
0.000003 query end
0.002271 freeing items
0.000009 storing result in query cache
0.000002 logging slow query
0.000004 cleaning up
让我看到了很多的时间用在发送数据花在有用的......怎么能我加速这部分?
三个问题:1)相同数据类型的'data_table.id'和'rating_table.id'是否相同? 2)除了索引'id'字段,你是否也编制了'rating'的索引? 3)你是否对该陈述进行了简要分析,以确定持续时间是否不是由其他事情引起的(如将数据发送回客户端)? – Bjoern
创建索引。这将大大提高查询响应时间。 –
是的,我在问题中说过评分已经有一个索引,两个表中的ID都是相同的数据类型。我现在在php myadmin中运行这个,所以这个时间实际上是在mysql中使用的。你也是什么意思的查询计划? – hackartist