这是我的查询
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秒钟,然后大约需要0.002秒
但在实时服务器上它不会少于2秒
有人可以帮我吗
并且recods仅在用户表和user_stamp表中大约为1000,在user_payment表中为abuot 1200
Thankx
答案 0 :(得分:1)
答案 1 :(得分:0)
这可能意味着在您的计算机上启用了缓存,并在实时计算机上关闭了缓存。尝试在本地计算机上进行不同的搜索,这些搜索应该大约在同一时间进行。
答案 2 :(得分:0)
您可以在MySQL上创建VIEW以从表中收集数据,而不是使用连接,仅从视图中选择,这将使您的数据显示得更快..
详细了解观看Click Here
答案 3 :(得分:0)
以这种方式使用LIKE不会使用索引。要使用索引,必须从字符串的开头搜索('1%'),或者只是停止使用LIKE,如果你真的不需要它。 由于更好的规格或/和更少的负载,它可能在您的系统上运行得更快。