2013-10-29 34 views
0

我們必須加快MySQL數據庫查詢的響應速度,該查詢與兩個真正巨大的表(每個行都超過1億行)進行連接。有兩個問題:其一,查詢速度慢。二,結果集大小可以從零行到幾千行。理想情況下,我們希望既加快查詢速度,又將結果集的大小限制爲某個(可調整的)最大值。加快查詢連接兩個巨大的表

任何人都有最喜歡的方式來分割表或什麼東西,我們可以做到這一點?

只是在這裏尋找創意。

+0

什麼是查詢?有哪些指數? –

+0

關於限制結果集,您可以通過where子句生成的方式來完成。如果此查詢是由網頁啓動的,則您有機會這樣做。 –

回答

2

首先,使用explain來查看是否使用了索引。即使有1億行,索引良好的表格也應該表現很好。這需要了解什麼explain告訴你,但它是值得的。

如果之後你仍然需要細分,我建議您查看mysql partitioning。請確保您使用explain partitions,並且查詢只查看少量分區。

1

您可以使用LIMIT限制結果集大小。

SELECT * 
FROM YourTable 
LIMIT 50; 

將顯示記錄1-50

SELECT * 
FROM YourTable 
LIMIT 50, 50; 

將顯示記錄51-100

至於加快,我們需要更多的信息查詢。如果你想分頁的結果,你會想運行冗長的查詢一次,並把結果放在一個表中,然後從那裏分頁結果。