是如何工作的,我使用的MySQL 它只有一個表數據庫「數據」與17,151257 rows.This表中有一欄串。我想打印,其中字符串列包含一個特定的查詢字符串(存儲在「entered_query」變量)的所有的行,所以我用以下:選擇的MySQL查詢優化和限制在MySQL
SELECT DISTINCT * from data WHERE string LIKE '%".$entered_query."%' limit 10
上述查詢作爲明顯被佔用太多的時間來執行。
我已閱讀,可以使用索引,但在這種情況下如何?
我也想過將整個數據分成10個不同的行,然後使用perl DBI執行10個並行查詢。
現在我以下的問題:
- 如何減少執行時間?
- 我聽說mysql中的「LIKE」查詢可以避免索引,所以有沒有更好的選擇對上述查詢?
- 當我們在MySQL查詢使用限制10,然後用MySQL停止,因爲發現前10個結果或第一它會搜索給定的查詢整個數據則返回前10個結果
我希望'$ entered_query'不包含其名稱所暗示的。否則,這可能是加快你不想要的查詢的一種方法。 – innaM
DISTINCT *應該做什麼,輸入字符串的大小是否有下限? – innaM
@innaM DISTINCT *用於選擇唯一的元組。 $ entered_query包含用戶輸入的在「字符串」列od表「data」中搜索的查詢。 *抱歉選擇令人困惑的例子。 –