我有兩個表,其中一個匹配評級的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