Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Který MySQL dotaz je lepší

Ahoj, v MySQL databázi máme uložená data pomocí AES_ENCRYPT a tedy když je selectujem, tak používáme AES_DECRYPT. Ale teď potřebujeme podle těchto dat i výsledky řadit a zajímalo by mě, který z níže uvedených příkladů/způsobů je lepší - resp. optimálnější/rychlejší (případně zda je to stejné):


SELECT ID, CONCAT(AES_DECRYPT(SURNAME,...), ' ',AES_DECRYPT(NAME,...)) AS FULLNAME,...
FROM user
WHERE...
ORDER BY  AES_DECRYPT(SURNAME,...) ASC, AES_DECRYPT(NAME,...) ASC

nebo:


SELECT ID, CONCAT(AES_DECRYPT(SURNAME,...), ' ',AES_DECRYPT(NAME,...)) AS FULLNAME, AES_DECRYPT(SURNAME,...) AS SURNAME_DECRYPT, AES_DECRYPT(NAME,...) AS NAME_DECRYPT
FROM user
WHERE...
ORDER BY  SURNAME_DECRYPT ASC, NAME_DECRYPT ASC

Díky za odpověď

Předmět Autor Datum
Jestli to dobre chapu, asi bych volil druhou moznost. Decryptujes v dotazu jen jednou a pak to muzes…
Dwane Dibbley 02.03.2018 10:48
Dwane Dibbley
ahoj, díky za odpověď, no potřebuji dostat např. jméno a příjmení v CONCAT() ale zároveň ten seznam… poslední
n.u.r.v. 02.03.2018 10:57
n.u.r.v.

ahoj, díky za odpověď, no potřebuji dostat např. jméno a příjmení v CONCAT() ale zároveň ten seznam musí být seřazen dle příjmení a jména

V prvním případě decryptuju v CONCAT a pak decryptuju v order by
V druhém případě decryptuju v CONCAT a pak ještě jednou zvlášť (SURNAME_DECRYPT a NAME_DECRYPT) a to použiju pro sort... Výsledek bude stejný

A teď co je pro DB lepší - jestli např v prvním případě nehrozí, že DB nejdřív decryptuje všechny položky v DB, pak podle nich seřadí a pak udělá výběr... (to ale asi je blbost)

Anebo DB udělá nejdřív výběr dat a pak udělá order a v tom případě jsou oba dotazy výkonově stejné, ale druhý dotaz má výhodu jak píšeš - data mohu použít na více místech

Zpět do poradny Odpovědět na původní otázku Nahoru