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

Join を使用する代わりにテーブルからデータを収集するために MySQL で VIEW を作成し、ビューからのみ選択することができます。これにより、データがより高速に表示されます。

ビューの詳細については、ここをクリックしてください

于 2012-05-21T09:44:15.450 に答える
0

これはおそらく、マシンではキャッシングがオンになっていて、稼働中のマシンではオフになっていることを意味します。ローカル マシンでさまざまな検索を実行してみてください。すべての検索にかかる時間はほぼ同じです。

于 2012-05-21T09:29:40.643 に答える
0

このように LIKE を使用すると、インデックスは使用されません。インデックスを利用するには、文字列の先頭 ('1%') から検索するか、本当に必要ない場合は LIKE を使用して停止する必要があります。より優れた仕様または/および負荷の軽減により、システムでより高速に実行される場合があります。

于 2012-05-21T10:17:42.173 に答える