Ich habe hier eine Anforderung:
Lokale Datenbank (eine):
Eine Tabelle user_local,
Remote-Datenbank (insgesamt zwei Bibliotheken, fünf Tabellen), alle Informationen sind über UID verknüpft
Eine Datenbank ( user_data_a), es gibt nur eine Tabelle user_basic, die die Grundinformationen aller Benutzer enthält. Die anderen vier Tabellen in einer anderen Datenbank (user_data_b) sind in zwei Kategorien unterteilt:
Eine Kategorie (zwei der Tabellen, user_profile_active und user_profile_not_active). werden zum Speichern von Benutzerdateien verwendet, eine Tabelle ist für aktive Benutzer, die andere Tabelle ist für inaktive Benutzer,
Ein anderer Tabellentyp (die anderen beiden Tabellen user_ext_info_active und user_ext_info_not_active) wird zum Speichern anderer Benutzerinformationen verwendet, eine Tabelle ebenfalls ein aktiver Benutzer, und die andere Tabelle ist ein inaktiver Benutzer,
Wenn beispielsweise der Datensatz einer UID in
user_basic nicht in user_profile_active ist, dann ist er in user_profile_not_active,
Wenn er nicht in ist user_ext_info_active, dann ist es in user_ext_info_not_active
Theoretisch entspricht „active“ „active“ und „not_active“ entspricht „not_active“.
Der aktuelle Bedarf besteht darin, user_basic hauptsächlich zu verwenden, um bestimmte Felder der entsprechenden Benutzerinformationen aus diesen beiden Tabellentypen abzurufen (insgesamt vier), und fügen Sie sie dann zu einem zusammen. Die Datensätze werden in die lokale Tabelle user_local geschrieben. Es gibt etwa 800.000 Datensätze. Master Qiu kann Ihnen einige Ratschläge geben, wie Sie damit umgehen können, um eine Abfrage der Datenbank zu vermeiden Schleife und vermeide Speicherüberlauf und Timeout~~ Ich flehe dich an
Das Framework ist thinkphp5 .1
如果你mysql数据性能够强大,可以写联表操作,一条语句搞定,但的确很容易造成超时导致内存溢出,建议分开操作吧,这个没什么捷径一张表就80万数据如果这几张表都联起表来查询 数据大的可怕,还是老实点先操作完user_profile_active和user_profile_not_active这两张数据表,完成了再操作后面两个表user_ext_info_active和user_ext_info_not_active