Bagaimana untuk meningkatkan kelajuan kumpulan
P粉155832941
2023-09-05 10:24:40
<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>
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:
Di atas akan memberikan anda senarai semua perkataan yang muncul sekali sahaja dalam pelbagai nama fail.
Semoga ini membantu, dan semua yang terbaik!