Domanda

Cerco di costruire una soluzione negozio che ha bisogno di essere scalabile. Attualmente recupera 1-2000 ordini in media al giorno su più negozi a base di Paese (ad esempio per Regno Unito, DE, DK, ES, ecc), ma questo fine potrebbe essere 10 volte tale importo in due anni.

Io sto guardando sia utilizzando i database country-shop separati per memorizzare le tabelle ordini, o in cerca di combinare tutto in una tabella di ordine.

Se sono presenti tutti gli ordini in una tabella con un ID globale (auto num) e l'ID paese (per esempio Regno Unito, DE, DK, ecc), ogni paese gli ordini avrebbe anche bisogno di avere ordine sequenziale. Quindi, in sostanza, ci piacerebbe avere un ID globale e un ID di ordine di campagna, con l'ordine di campagna ID essere sequenziale per i paesi solo, per esempio

ID = 1000 globale, paese = Regno Unito, al fine paese ID = 1000
ID globale = 1001, country = DE, ordine paese ID = 1000
ID globale = 1002, country = DE, ordine paese ID = 1001
ID globale = 1003, country = DE, ordine paese ID = 1002
ID globale = 1004, paese = Regno Unito, al fine paese ID = 1001

L'ID globale sarebbe DB generato e non qualcosa che avrei bisogno di preoccuparsi. Ma sto pensando che avrei dovuto fare una query per ottenere l'ordine corrente del paese ID base + 1 per trovare il numero sequenziale successivo. Due cose mi riguardano su questo: 1) tempi di query quando la tabella ha potenzialmente milioni di righe di dati e sto facendo una lettura prima di una scrittura, 2) il potenziale per numero ID scontri a causa di scritture simultanee / legge

Con una tabella MyISAM l'intera tabella potrebbe essere bloccato mentre l'ultimo ordine del paese + 1 viene recuperato, per evitare che il numero ID scontri.

Mi chiedo se qualcuno sa di una soluzione più elegante?

Saluti, imanc

È stato utile?

Soluzione

C'è un modo di fare questo.

INSERT INTO test123 (`Country`, `Country order code`)
SELECT 'UK', MAX(`Country order code`) + 1
FROM test123
WHERE `Country` = 'UK'

Questo pone un nuovo ordine per il Regno Unito in, seleziona il codice d'ordine più alto di un aggiunge uno. Questo è stato testato, e tutto ciò che deve essere cambiato è i nomi delle tabelle e dei campi

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top