一个商品表需要销量这个字段吗?
一个商品表需要销量这个字段吗?
根据表设计的范式 销量可以由订单记录得出(或者建一个商品每日效果表,记录每天的效率),但是这样在实际中却遇到了这样的问题?
怎么查询时怎么根据商品的销量排序呢,还有按点赞数排序呢,收藏数呢?想淘宝这样的怎么做呢?
回复内容:
一个商品表需要销量这个字段吗?
根据表设计的范式 销量可以由订单记录得出(或者建一个商品每日效果表,记录每天的效率),但是这样在实际中却遇到了这样的问题?
怎么查询时怎么根据商品的销量排序呢,还有按点赞数排序呢,收藏数呢?想淘宝这样的怎么做呢?
销量是必须的,但是这一列可以不是实时的,你应该记上统计出这个数据的时候的时间。
我的建议是,你先给订单时间加index,然后每过一小时(这个时间看你的售货速度)统计一下cache下当时的销量,然后把销量和时间这两个列存下来。你在前端显示真实的销量的时候,就可以把cache的数据,加上cache之后发生的订单的总和相加。这样你过一段时间就incrementally地做一下,问题就解决了。
订单时间加index的意思就是说,你知道你目前的cache是到譬如说半个小时前,那你这样就很容易query出半个小时内发生的订单,每一次处理的数据都会非常少。因此这个系统的负担不会随着你订单的增加而变慢,你也不需要因为每一次订单就频繁的更改“销量”这个列而产生性能问题。
如果一秒钟就有几个人挤进来,那可能会总是有一点误差,不过稍微做点变通就解决了。
对于如何给销量排序,我觉得需要在缓存这一层来解决,不需要在数据库维护这个index。如果按照这种方法维护销量的话,虽然直接按照这个列排序是不正确的,但是他“基本正确”。对于这样的属性的数据有特殊的排序方法。其中的一种方法是,你做一个qsort的变形,但是用户看到哪里你才排序到哪里。通常你在前端让用户按照销量排序的话,他只会看最前面的或者最后面的。平摊到每一次查阅,复杂度基本是log(n)的。
这种方法基本上可以用到你的数据规模明显比淘宝少的时候。你真有了淘宝那么大的数据,那所有的事情都得改成分布式的。最后要么上spark,要么上sqlazure,要么上scope,做起来就差很远了。
表的设计应该按照实际情况来,如果这个字段用得频繁,考虑到查询效率可以增加。
在你有排序的场景下,销量字段是必须的,并且由于是经常更新的字段,很有可能会按实际情况拆分到子表里,举个例子,goods存储商品信息,goods_counter一对一goods表,并存储各种统计信息,包括不限于销量,查看数,收藏数,点赞数,并根据需要建立索引
很多实际的一定规模(用户数或者数据量)的系统,未必还会使用MySQL做排序,会把数据放入搜索引擎,比如elasticsearch, solr, sphinx等等,然后利用搜索引擎做排序
都按销量排序了,那就加上呗。

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Die Hauptgründe, warum Sie sich bei MySQL nicht als Root anmelden können, sind Berechtigungsprobleme, Konfigurationsdateifehler, Kennwort inkonsistent, Socket -Dateiprobleme oder Firewall -Interception. Die Lösung umfasst: Überprüfen Sie, ob der Parameter Bind-Address in der Konfigurationsdatei korrekt konfiguriert ist. Überprüfen Sie, ob die Root -Benutzerberechtigungen geändert oder gelöscht und zurückgesetzt wurden. Stellen Sie sicher, dass das Passwort korrekt ist, einschließlich Fall- und Sonderzeichen. Überprüfen Sie die Einstellungen und Pfade der Socket -Dateiberechtigte. Überprüfen Sie, ob die Firewall Verbindungen zum MySQL -Server blockiert.

Vereinfachung der Datenintegration: AmazonRDSMYSQL und Redshifts Null ETL-Integration Die effiziente Datenintegration steht im Mittelpunkt einer datengesteuerten Organisation. Herkömmliche ETL-Prozesse (Extrakt, Konvertierung, Last) sind komplex und zeitaufwändig, insbesondere bei der Integration von Datenbanken (wie AmazonRDSMysQL) in Data Warehouses (wie Rotverschiebung). AWS bietet jedoch keine ETL-Integrationslösungen, die diese Situation vollständig verändert haben und eine vereinfachte Lösung für die Datenmigration von RDSMysQL zu Rotverschiebung bietet. Dieser Artikel wird in die Integration von RDSMYSQL Null ETL mit RedShift eintauchen und erklärt, wie es funktioniert und welche Vorteile es Dateningenieuren und Entwicklern bringt.

MySQL hat eine kostenlose Community -Version und eine kostenpflichtige Enterprise -Version. Die Community -Version kann kostenlos verwendet und geändert werden, die Unterstützung ist jedoch begrenzt und für Anwendungen mit geringen Stabilitätsanforderungen und starken technischen Funktionen geeignet. Die Enterprise Edition bietet umfassende kommerzielle Unterstützung für Anwendungen, die eine stabile, zuverlässige Hochleistungsdatenbank erfordern und bereit sind, Unterstützung zu bezahlen. Zu den Faktoren, die bei der Auswahl einer Version berücksichtigt werden, gehören Kritikalität, Budgetierung und technische Fähigkeiten von Anwendungen. Es gibt keine perfekte Option, nur die am besten geeignete Option, und Sie müssen die spezifische Situation sorgfältig auswählen.

1. Verwenden Sie den richtigen Index, um das Abrufen von Daten zu beschleunigen, indem die Menge der skanierten Datenmenge ausgewählt wird. Wenn Sie mehrmals eine Spalte einer Tabelle nachschlagen, erstellen Sie einen Index für diese Spalte. Wenn Sie oder Ihre App Daten aus mehreren Spalten gemäß den Kriterien benötigen, erstellen Sie einen zusammengesetzten Index 2. Vermeiden Sie aus. Auswählen * Nur die erforderlichen Spalten. Wenn Sie alle unerwünschten Spalten auswählen, konsumiert dies nur mehr Serverspeicher und veranlasst den Server bei hoher Last oder Frequenzzeiten, beispielsweise die Auswahl Ihrer Tabelle, wie beispielsweise die Spalten wie innovata und updated_at und Zeitsteuer und dann zu entfernen.

In der MySQL -Datenbank wird die Beziehung zwischen dem Benutzer und der Datenbank durch Berechtigungen und Tabellen definiert. Der Benutzer verfügt über einen Benutzernamen und ein Passwort, um auf die Datenbank zuzugreifen. Die Berechtigungen werden über den Zuschussbefehl erteilt, während die Tabelle durch den Befehl create table erstellt wird. Um eine Beziehung zwischen einem Benutzer und einer Datenbank herzustellen, müssen Sie eine Datenbank erstellen, einen Benutzer erstellen und dann Berechtigungen erfüllen.

Wenn MySQL -Modifys -Tabellenstruktur verwendet werden, werden normalerweise Metadatenverriegelungen verwendet, wodurch die Tabelle gesperrt wird. Um die Auswirkungen von Schlösser zu verringern, können die folgenden Maßnahmen ergriffen werden: 1. Halten Sie Tabellen mit Online -DDL verfügbar; 2. Führen Sie komplexe Modifikationen in Chargen durch; 3.. Arbeiten während kleiner oder absendlicher Perioden; 4. Verwenden Sie PT-OSC-Tools, um eine feinere Kontrolle zu erreichen.

MySQL kann nicht direkt auf Android ausgeführt werden, kann jedoch indirekt mit den folgenden Methoden implementiert werden: Die Verwendung der Leichtgewichtsdatenbank SQLite, die auf dem Android -System basiert, benötigt keinen separaten Server und verfügt über eine kleine Ressourcennutzung, die für Anwendungen für Mobilgeräte sehr geeignet ist. Stellen Sie sich remote eine Verbindung zum MySQL -Server her und stellen Sie über das Netzwerk zum Lesen und Schreiben von Daten über das Netzwerk eine Verbindung zur MySQL -Datenbank auf dem Remote -Server her. Es gibt jedoch Nachteile wie starke Netzwerkabhängigkeiten, Sicherheitsprobleme und Serverkosten.

Die MySQL-Datenbankleistung Optimierungshandbuch In ressourcenintensiven Anwendungen spielt die MySQL-Datenbank eine entscheidende Rolle und ist für die Verwaltung massiver Transaktionen verantwortlich. Mit der Erweiterung der Anwendung werden jedoch die Datenbankleistung Engpässe häufig zu einer Einschränkung. In diesem Artikel werden eine Reihe effektiver Strategien zur Leistungsoptimierung von MySQL -Leistung untersucht, um sicherzustellen, dass Ihre Anwendung unter hohen Lasten effizient und reaktionsschnell bleibt. Wir werden tatsächliche Fälle kombinieren, um eingehende Schlüsseltechnologien wie Indexierung, Abfrageoptimierung, Datenbankdesign und Caching zu erklären. 1. Das Design der Datenbankarchitektur und die optimierte Datenbankarchitektur sind der Eckpfeiler der MySQL -Leistungsoptimierung. Hier sind einige Kernprinzipien: Die Auswahl des richtigen Datentyps und die Auswahl des kleinsten Datentyps, der den Anforderungen entspricht, kann nicht nur Speicherplatz speichern, sondern auch die Datenverarbeitungsgeschwindigkeit verbessern.
