我的表架構搜索:的MySQL使用的所有類型,同時在主鍵
我上面的表中有〜10L的數據。當使用說明一下,它顯示爲,
由此看來,型顯示ALL,額外節目使用其中和行不O(1)。但是,對於主鍵搜索,類型應該是const,行在O(1)?我無法找出問題,這會導致查詢速度變慢。
我的表架構搜索:的MySQL使用的所有類型,同時在主鍵
我上面的表中有〜10L的數據。當使用說明一下,它顯示爲,
由此看來,型顯示ALL,額外節目使用其中和行不O(1)。但是,對於主鍵搜索,類型應該是const,行在O(1)?我無法找出問題,這會導致查詢速度變慢。
您的id
字段是varchar,而您將您正在查找的值作爲數字傳遞。
這意味着,MySQL已經執行用於查找值的隱式數據轉換和will not be able to use the index:
對於具有數字字符串列的比較,MySQL不能使用在列的 索引來查找快速提高價值。如果str_col是 索引的字符串列,該指數不能在下面的語句執行 查詢時使用:
SELECT * FROM tbl_name WHERE str_col=1;
這樣做的原因是, 有可能轉換爲數值1許多不同的字符串,如 爲'1','1'或'1a'。
要麼轉換你id
外地號碼或傳遞值的字符串。
由於您的id列是varchar,因此您需要在搜索時爲其提供字符串。
嘗試,id= '123456'
原因: 因爲你是一個比較VARCHAR列來詮釋,它會首先行轉換成int,然後用123456(INT)相匹配。
當您將您正在查找的值作爲數字傳遞時,您的id字段爲varchar。將您的ID轉換爲數字或將值作爲字符串傳遞。 – Shadow