Rumah > Soal Jawab > teks badan
Saya mempunyai pertanyaan yang melakukan perkara berikut:
AND TIME(NOW() + INTERVAL li.tzOffset HOUR - INTERVAL li.dst HOUR) BETWEEN '08:00:00' AND '20:00:00'
Masalahnya ialah prestasinya tidak begitu baik, tetapi saya tidak tahu jika ada cara untuk meningkatkan prestasinya. Tiada indeks pada tzOffset atau dst. Adakah pengindeksan mereka membantu?
Saya sedang menjalankan MySQL 5.6, tetapi jangkakan saya mungkin akan menaik taraf kepada 5.7 dalam masa satu atau dua minggu. Jika MySQL 8.0 mempunyai ciri yang boleh mempercepatkan pertanyaan, adalah baik untuk mengetahui tentang perkara itu supaya saya boleh mewajarkan menghabiskan masa melihat isu itu.
P粉5614384072024-04-05 15:52:08
Lihat Boleh dicari
Apa yang lebih teruk ialah anda pada dasarnya telah
WHERE function(variable1, variable2) BETWEEN ...
Jika ada cara untuk menggabungkan li.tzOffset - li.dst
ke dalam satu lajur maka anda boleh melakukan ini
WHERE new_column BETWEEN ...
Yang mungkin boleh digunakan melibatkan new_column
的INDEX
Saya rasa lajur penjanaan indeks telah ditambahkan dalam 5.7. Jika tiada "lajur terhasil" anda perlu menambah lajur baharu dan mengira perbezaan di dalamnya.