域我有url_stack
表urlid
和domainid
和domain_stack
表domainid
和domain_count
。SQL:選擇5個網址,其中至少走訪儘可能快
url_stack
具有urlid
作爲其主鍵和BTREE
索引domainid
。 domain_stack
具有domainid
作爲其主要和BTREE
索引domain_count
。
我不斷地將網址添加到堆棧。當從堆棧中彈出url時,我將1
添加到它的domain_count
。
當我彈出一個url時,我保持它的域的數量,這就是爲什麼有很多域沒有任何url(這就是爲什麼@moj回答有問題)。
當彈出我想選擇爲每個可用domain_counts
的url
和限制自己的前5
例如,一個共同的結果將是:
+------------+------------+--------------+
| urlid | domainid | domain_count |
+------------+------------+--------------+
| 852336945 | -184315873 | 1 |
| 1930023009 | -43391685 | 2 |
| -112137768 | 1607144692 | 4 |
| 1673460622 | 567460239 | 8 |
| 612511843 | 1444323871 | 11 |
+------------+------------+--------------+
5 rows in set (5.37 sec)
通過調用:
SELECT urlid,domain_stack.domainid,domain_stack.domain_count
FROM domain_stack
INNER JOIN url_stack
ON url_stack.domainid = domain_stack.domainid
GROUP BY domain_stack.domain_count LIMIT 5;
問題是這樣太慢 - 我必須得到每個查詢0.5秒。我應該如何更改我的查詢/我的表以使其更快?
編輯:這裏的描述的情況http://sqlfiddle.com/#!2/70ded/1/0
你能解釋一下利用集團的' '?或者這是一個錯字?你有沒有嘗試'ORDER BY domain_stack.domain_count ASC LIMIT 5;'爲你的最後一行? – ace
@ace可能會有很多網址與'domain_count' 1,如果我使用'ORDER BY'我會得到5個網址'domain_count = 1',但我想要每個domain_count類別之一,我希望這可以解釋它.. – zenpoy
啊。所以如果我有5個網址與'domain_count = 1',你只能得到1個網址,並且無論你得到哪一個? – ace