Bagaimana untuk meningkatkan kelajuan kumpulan
P粉155832941
P粉155832941 2023-09-05 10:24:40
0
1
451
<p>Saya mempunyai jadual besar dengan lebih daripada 3B baris dan pertanyaan saya kini mengambil masa 3 hari untuk dilaksanakan. </p> <p>Ini adalah pertanyaan saya: </p> <pre class="brush:php;toolbar:false;">masukkan ke dalam perkataan frekuensi (perkataan, kekerapan, nama fail) pilih perkataan, kira(*) sebagai kekerapan, maks(nama fail) daripada allwordstemp kumpulan mengikut perkataan</pre> <p>Pada asasnya, pertanyaan saya adalah untuk mengumpulkan mengikut perkataan daripada jadual allwordstemp, dan saya ingin mengetahui <strong>nama fail</strong> 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. </p> <p>jadual allwordstemp (nama fail ialah fail id): </p> <pre class="brush:php;toolbar:false;">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;</pre> <p>jadual kata kekerapan:</p> <pre class="brush:php;toolbar:false;">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;</pre> <p>Terangkan pemilihan:</p> <pre class="brush:php;toolbar:false;">+----+-------------+------------ ---------------------------------------------------+----------- ---- ------------+---------+------+-----------+--- ---- ---+-------------+ |. pilih_jenis | +----+-------------+--------------+--------------- -------------------------- -----+------+------------+----------+----------- -- + |. +----+-------------+--------------+--------------- ------------------------- -----+------+------------+----------+----------- -- +</pra> <p>Bagaimanakah saya boleh membuat pertanyaan saya lebih cepat? </p>
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!