Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

PILIH SQL_CALC_FOUND_ROWS Permintaan sangat lambat lebih dari 250000 catatan

Ada deskripsi yang bagus di blog ini:https://www.percona.com/blog/2007/08/28/to-sql_calc_found_rows-or-not-to-sql_calc_found_rows/

Demonstrasi menunjukkan bahwa ya, menggunakan SQL_CALC_FOUND_ROWS sangat buruk untuk kinerja saat Anda menggunakannya di meja besar.

Seringkali lebih baik menjalankan dua kueri secara terpisah:

/* no need to do the join in this case, because it won't affect the count */
SELECT COUNT(*) 
FROM main_articles 
WHERE `article_type`='2' 

SELECT main_article.* 
FROM main_articles 
LEFT JOIN main_members 
ON article_mem_id=member_id 
WHERE `article_type`='2' 
ORDER BY article_id 
DESC LIMIT 0,20

Omong-omong, ini tidak terkait dengan masalah SQL_CALC_FOUND_ROWS, tapi saya ingin tahu mengapa Anda bergabung dengan main_members meja. Anda tidak mengambil kolom apa pun darinya. LEFT JOIN berarti tidak akan membatasi baris. Jika saya dapat menyimpulkan hubungan tabel dari nama kolom, hanya ada satu baris di main_members untuk setiap baris di main_articles , jadi gabungan juga tidak akan menambah jumlah baris. Jadi sebenarnya tidak ada gunanya melakukan ini.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana menghubungkan aplikasi python dengan database online

  2. Query MySql untuk Menjalankan Koreksi Saldo

  3. Laravel OrderDengan jumlah hubungan

  4. 1054 - Kolom 'apa_calda' tidak diketahui di 'klausa di mana'

  5. Hibernate:constraintName adalah null di MySQL