Bagaimana untuk meningkatkan kelajuan kumpulan
P粉155832941
P粉155832941 2023-09-05 10:24:40
0
1
413

Saya mempunyai jadual besar dengan lebih daripada 3B baris dan pertanyaan saya kini mengambil masa 3 hari untuk dilaksanakan.

Ini adalah pertanyaan saya:

masukkan ke dalam perkataan frekuensi (perkataan, kekerapan, nama fail) pilih perkataan, kira(*) sebagai kekerapan, maks(nama fail) daripada allwordstemp kumpulan mengikut perkataan

Pada asasnya, pertanyaan saya adalah untuk mengumpulkan mengikut perkataan daripada jadual allwordstemp, dan saya ingin mengetahui nama fail apabila kekerapan = 1, itulah sebabnya saya menambah max(nama fail), Kerana nama fail perlu dimasukkan dalam fungsi agregat, seperti maks. Jika kekerapan > 1, saya juga tidak memerlukan nilai nama fail. Kedua-dua jadual mempunyai 2 indeks pada perkataan dan nama fail.

jadual allwordstemp (nama fail ialah fail id):

BUAT JADUAL `allwordstemp` ( `perkataan` varchar(45) LALAI NULL, `nama fail` int(11) NULL LALAI, KEY `idx_allwordstemp_word` (`word`), KEY `idx_allwordstemp_filename` (`filename`) ) ENJIN=CHARSET LALAI InnoDB=utf8;

jadual kata kekerapan:

BUAT JADUAL `frequencywords` ( `perkataan` varchar(45) LALAI NULL, `frekuensi` int(11) LALAI NULL, `nama fail` int(11) NULL LALAI, KEY `idx_frequencywords_word` (`word`), KEY `idx_frequencywords_frequency` (`frequency`), KEY `idx_frequencywords_filename` (`filename`) ) ENJIN=CHARSET LALAI InnoDB=utf8;

Terangkan pemilihan:

+----+-------------+------------ ---------------------------------------------------+----------- ---- ------------+---------+------+-----------+--- ---- ---+-------------+ |. pilih_jenis | +----+-------------+--------------+--------------- -------------------------- -----+------+------------+----------+----------- -- + |. +----+-------------+--------------+--------------- ------------------------- -----+------+------------+----------+----------- -- + 

Bagaimanakah saya boleh membuat pertanyaan saya lebih cepat?

P粉155832941
P粉155832941

membalas semua (1)
P粉741678385

Penapis anda nampaknya berdasarkan kekerapan, bukan perkataan atau nama fail. Jadi saya mula-mula mengindeks semua perkataan mengikut kekerapan.

Kemudian, dengan mengandaikan kekerapan ialah integer, saya akan menambah klausa WHERE seperti ini:

select word, max(filename) from allwordstemp where frequency = 1 group by word

Di atas akan memberikan anda senarai semua perkataan yang muncul sekali sahaja dalam pelbagai nama fail.

Semoga ini membantu, dan semua yang terbaik!

    Muat turun terkini
    Lagi>
    kesan web
    Kod sumber laman web
    Bahan laman web
    Templat hujung hadapan
    Tentang kita Penafian Sitemap
    Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!