簡體   English   中英

MYSQL查詢十億條記錄和超時問題

[英]MYSQL query a billion records and timeout issues

因此,我有一個帶有一個表的MYSQL數據庫,該表每秒增長5,000行。 我希望該表能夠進入十億條記錄。 我現在在php中有一個查詢功能:

 $result =mysqli_query($con, "SELECT * FROM table WHERE  `data`='".$input."' LIMIT 0 , 30");

問題很明顯,表越大,查詢最新記錄所需的時間越長。 到目前為止,該功能只是超時。 如果我直接從sql運行相同的查詢,它將執行相同的操作。

有沒有更好的方法來查詢該表以加快查詢時間。 是否可以從最后一條記錄開始,從第一條記錄開始查詢,以及之間的增量查詢來加快查詢速度?

另外,如果有更快的替代方法,我也不會死於使用php,請讓我知道。

將表拆分成多個表並在多個較小的表上同時運行查詢會更好嗎?

在此先感謝您。

索引在這里非常重要。 產生巨大的變化。 還要確保將其正確規范化。

另一個可行的想法是沒有一個大數據庫。 但是,根據以后查詢時知道的條件,將其分成許多較小的對象。 像日期,首字母等。讓這個大數據庫一直在增長是不切實際的。 它必須被分割。

另一個部門可能是將較舊的數據存儲在較慢的較大塊中。 將新使用的數據保存在臨時表中。

如果您有一個很大的表,並且您感興趣的值是“最新的”,則可以使用MySQL 分區來提高性能。 您可以查看更多文章

索引是這里故事的一部分。

嘗試避免LIMIT以開始和結束。 如果您使用LIMIT 1000000,30,則mysql服務器需要在內存中保留1000030條記錄,因此浪費大量資源再次丟棄1000000條記錄來保留30條記錄,尤其是當mysql應該在磁盤上創建臨時表時,當內存表變為大...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM