Как насчет использования свойств объекта в качестве хеш-таблицы ? Таким образом, ваш лучший сценарий состоит только в случайном 8 раз. Это было бы эффективно только в том случае, если вы хотите получить небольшую часть диапазона чисел. Это также значительно меньше памяти, чем Fisher-Yates, потому что вам не нужно выделять пространство для массива.
var ht={}, i=rands=8;
while ( i>0 || keys(ht).length
Затем я узнал, что Object.keys (obj) - это функция ECMAScript 5, так что выше в настоящее время почти бесполезно в интернетах. Не бойтесь, потому что я сделал его совместимым с ECMAScript 3, добавив такие функции клавиш, как это.
if (typeof keys == "undefined")
{
var keys = function(obj)
{
props=[];
for (k in ht) if (ht.hasOwnProperty(k)) props.push(k);
return props;
}
}
Лучше, каким образом? Тот запрос делает все, что Вы спрашиваете его и, если существует индекс на datetime_field
, это - с такой скоростью, как он собирается добраться.
, Если Вы волнуетесь по поводу запроса, выглядящего "ужасными", не быть. Его намерение довольно ясно.
единственное возможное улучшение, которое Вы могли рассмотреть, должно использовать, АННУЛИРУЕТ для этих zero-date/time строк, в этом случае Ваш запрос становится:
SELECT * FROM `table` WHERE `datetime_field` IS NULL
Это - то, что я сделал бы с совместимым стандартами DBMS. Мое понимание - то, что май MySQL представляет истинные ПУСТЫЕ поля даты и времени этим ужасающим способом, в этом случае я предполагаю эти IS NULL
, может не работать.
Я использую это:
SELECT * FROM `table` WHERE UNIX_TIMESTAMP(`datetime_field`) = 0
Позвольте мне произвести правовую оговорку, я не уверен, что это сделает. Но было бы действительно здорово, если бы это работало.
SELECT * FROM table WHERE datetime = DATESUB(NOW(),NOW());
SELECT * FROM db.table WHERE UNIX_TIMESTAMP (datetime_field) = 0
Мне нравится этот код, потому что он не только улавливает «нулевые даты» (например, '0000-00-00 00:00 : 00 ') также ловит "нули в датах" (например,' 2010-01-00 00:00:00 ')