2012-05-21 80 views
0

這是我的查詢MySQL查詢不會運行更快

SELECT `tbl_user`.`file_id` , `tbl_user`.`folder_id` , `tbl_user`.`user_id` , `tbl_user`.`fathername` , `tbl_user`.`investor_type` , `tbl_user`.`user_name` , `account_id` , `user_witness_id` , `visible` , sum(tbl_user_payment.user_amount) AS amt, `tbl_user_payment`.`trans_type` 
FROM (
`tbl_user` 
) 
LEFT JOIN `tbl_user_payment` ON `tbl_user`.`user_id` = `tbl_user_payment`.`user_id` 
LEFT JOIN `tbl_user_stamp` ON `tbl_user_stamp`.`user_id` = `tbl_user_payment`.`user_id` 
WHERE `tbl_user`.`visible` = '1' 
AND `tbl_user`.`user_name` LIKE '%1%' 
OR `tbl_user`.`file_id` LIKE '%1%' 
OR `tbl_user`.`folder_id` LIKE '%1%' 
OR `tbl_user`.`fathername` LIKE '%1%' 
OR `tbl_user`.`nic` LIKE '%1%' 
OR `tbl_user`.`email` LIKE '%1%' 
OR `tbl_user`.`city` LIKE '%1%' 
OR `tbl_user`.`phone` LIKE '%1%' 
OR `tbl_user`.`bank_account` LIKE '%1%' 
GROUP BY `tbl_user`.`user_id` 

我已經索引的所有類似值,但仍是我的查詢需要說不上2秒,我不知道它爲什麼這樣做。

我的本地系統上它需要約2秒第一次,然後它會是

但現場服務器也不會去小於2秒

能有人plz幫助後,需要大約0.002秒我

和recods只在用戶表和user_stamp表1000和1200說不上在user_payment表

Thankx

+0

你真的需要所有'LIKE'語句嗎?與'='相比會更快,可以使用指數。 – Sirko

+0

你是否也索引外鍵? –

+0

使用LIKE減慢您的查詢... – Jetoox

回答

1

我猜測查詢緩存未在您的活動服務器上激活。

你想檢查你的MySQL live服務器配置。

Manual

+0

謝謝,你在哪裏:) – Iori

0

這可能意味着緩存打開你的機器上,並關閉了現場的機器上。嘗試在本地機器上進行不同的搜索,這些應該都在同一時間。

0

你可以在MySQL創建視圖,以收集表,而不是使用連接只有從視圖中選擇數據,這將使顯示您的數據來得更快..

瞭解更多關於視圖Click Here

0

使用這樣就不會使用索引。要使用索引,您必須從字符串的開頭搜索('1%'),或者如果您不需要,就停止使用LIKE。 由於更好的規格或/和更少的負載,它可能在您的系統上運行得更快。