как передать неограниченное количество аргументов по ссылке в php

Вот игровой чейнджер, который может быть полезен для многих,

У меня есть таблица с 200k строк с последовательным идентификатором, мне нужно было выбрать N случайные строки, поэтому Я предпочитаю генерировать случайные значения, основанные на самом большом идентификаторе в таблице, я создал этот скрипт, чтобы узнать, какая из них самая быстрая:

logTime();
query("SELECT COUNT(id) FROM tbl");
logTime();
query("SELECT MAX(id) FROM tbl");
logTime();
query("SELECT id FROM tbl ORDER BY id DESC LIMIT 1");
logTime();

Результаты:

  • Count: 36.8418693542479 ms
  • Max: 0.241041183472 ms
  • Порядок: 0.216960906982 ms

Основываясь на этих результатах, order desc - самая быстрая операция для получения максимального id. Вот мой ответ на вопрос:

SELECT GROUP_CONCAT(n SEPARATOR ',') g FROM (
    SELECT FLOOR(RAND() * (
        SELECT id FROM tbl ORDER BY id DESC LIMIT 1
    )) n FROM tbl LIMIT 10) a

...
SELECT * FROM tbl WHERE id IN ($result);

FYI: Чтобы получить 10 случайных строк из таблицы 200k, мне потребовалось 1,78 мс (включая все операции на стороне php)

13
задан bzzb 11 August 2011 в 13:39
поделиться