0

这是我的查询

    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 秒

有人可以帮我吗

并且记录仅在 user 表和 user_stamp 表中约为 1000,在 user_payment 表中约为 1200

谢谢

4

4 回答 4

1

我猜你的实时服务器上没有激活查询缓存。

您想检查您的 MySQL 实时服务器配置。

手动的

于 2012-05-21T09:29:00.510 回答
0

这可能意味着缓存在您的机器上打开,并在实时机器上关闭。尝试在您的本地机器上进行不同的搜索,这些都应该花费大约相同的时间。

于 2012-05-21T09:29:40.643 回答
0

您可以在 MySQL 上创建 VIEW 以从表中收集数据,而不是使用 join 并仅从视图中选择,这将使您的数据显示得更快..

了解有关查看的更多信息,请单击此处

于 2012-05-21T09:44:15.450 回答
0

以这种方式使用 LIKE 不会使用索引。要使用索引,您必须从字符串的开头搜索 ('1%'),或者如果您真的不需要它,就停止使用 LIKE。由于更好的规格或/和更少的负载,它可能在您的系统上运行得更快。

于 2012-05-21T10:17:42.173 回答