Istnieje kilka sposobów pisania instrukcji SQL 1: WYBIERZ * Z nazwy tabeli KOLEJNOŚĆ WEDŁUG RAND() LIMIT Liczba fragmentów danych, które chcesz uzyskać; 2: WYBIERZ *Z 'TABELI', GDZIE id >= (WYBIERZ FLOOR( MAX(id) * RAND()) Z 'table' ) UPORZĄDKUJ WEDŁUG ID LIMIT Liczba danych, które chcesz uzyskać; 3:WYBIERZ * Z 'TABELI' JAKO T1 JOIN (WYBIERZ RUNDĘ(RAND() * (WYBIERZ MAX(id) Z 'tabeli')) JAKO ID) JAKO T2, GDZIE t1.id >= t2.id ORDER BY t1.id ASC LIMIT Liczba danych, które chcesz uzyskać; 4: WYBIERZ * Z 'tabeli'GDZIE id >= (WYBIERZ floor(RAND() * (WYBIERZ MAX(id) Z 'table'))) LIMIT KOLEJNOŚCI WEDŁUG ID Liczba danych, które chcesz uzyskać; 5: WYBIERZ * Z 'tabeli', GDZIE id >= (WYBIERZ floor( RAND() * (((WYBIERZ MAX(id) Z 'table')-(WYBIERZ MIN(id) Z 'table')) + (WYBIERZ MIN(id) Z 'table'))) KOLEJNOŚĆ WEDŁUG ID OGRANICZ LICZBĘ DANYCH, KTÓRE CHCESZ UZYSKAĆ; 6:WYBIERZ * Z 'TABLE' JAKO T1 JOIN (WYBIERZ ROUND(RAND() * ((WYBIERZ MAX(id) FROM 'table')-(SELECT MIN(id) FROM 'table'))+(SELECT MIN(id) FROM 'table')) AS ID) JAKO ID) JAKO T2, GDZIE t1.id >= t2.id KOLEJNOŚĆ WEDŁUG t1.id OGRANICZ liczbę danych, które chcesz uzyskać; Czas zapytania 1>> czas zapytania 2>> czas zapytania 5> czas zapytania 6> czas zapytania 4> czas zapytania 3, czyli3 jest najbardziej efektywne. |