>В любом случае правильнее сделать еще одну колонку с crc32, заполнять ее при вставке и группировать по >ней, а не выполнять это при SELECT. (разумеется если приоритет у выборок, а не вставок)
Да, иногда это удобно, особенно вместо того чтобы создавать составной индекс по нескольким полям (который будет достаточно большой), можно создать по одному полю, например используя ф-ию MD5 (128 бит, запись состоит из 32 символов) или если мы хотим подстраховаться больше то лучше использовать Sha1 (160 бит, 40 символов) нежели CRC32 (32 бита, беззнаковое число)
И соответственно запросы примут вид
SELECT
*
FROM
tbl_name
WHERE
hash_col=MD5(CONCAT(col1, col2))
AND col1='constant'
AND col2='constant'; * This source code was highlighted with Source Code Highlighter.
так просто большая вероятность того, что значения CRC32 совпадут, особенно если в таблице много записей.
Ну и соответственно индекс поставить не на все поле, а на какую-то его часть.
>правда я не понял что вы имели ввиду — что в этом поле — text или например varchar(1000)?)
например URI (varchar(100))
Ну когда приезжает на конференции в Россию — тогда он Пётр, а когда на Google talks выступает, тогда Питер :-)
Все зависит от того на какой манер произносить :-)
Да, первая часть, как Вы написали действительно кешируется в мемкеш
select article_id from articleы where author_id = 1 (эту часть можно держать в мемкеше уже)
Но статистику можно смотреть не только по каждому автору но и по всем новостям вцелом, т.е. каждый автор может смотреть как общую статистику, так и свою лично.
Сейчас быстро нахожу и исправляю грамматические и пунктуационные ошибки у себя в статье. Просто написал, и самому стыдно :-( Спасибо, людям, которые мне в этом периодически помогают в скайпе и аське :-)
Честно-говоря планировал завтра уйти в отпуск. Но когда вернусь, обещаю написать еще что-нибудь по данной тематике, если это, конечно, будет интересно сообществу.
По поводу запроса LIKE с начальным %. Есть случаи, когда мы, например, записывает в БД почтовые ящики клиентов. И тогда вместо запроса
WHERE mail LIKE '%@gmail.com'
чтобы достать всех пользователей с указанным доменным именем.
Проще вставлять записи в реверс-порядке и делать индекс по этому полю по первым, скажем, 8 байтам.
Соответственно доменные имена будут вначале, а запрос примет вид
Только в другой блог запостил предложение потестить скорость обработки ДОМ модели, как увидел эти тесты… Как вернусь с работы… непременно попробую что-то вроде в разных браузерах…
var t = new Date().getTime();
var node;
for(i = 0; i<1000; i++){
node = document.getElementByID('someID');
var myElement = document.createElement('');
myElement.innerHTML = «blabal»;
node.appendChild(myElement);
};
var t1 = new Date().getTime();
Кстати, может быть кто-то из сообщества, у кого сейчас больше времени, чем у меня напишет тест лучше чем, просто прогон пустого цикла миллион раз? Для сравнения скорости обработки JS?
Например, для меня наиболее интересно как быстро интерпретатор JS работает с DOM объектами
т.е. как быстро выполняются ф-ии
var t = new Date().getTime();
var node;
for(i = 0; i<1000; i++){
node = document.getElementByID('someID');
var myElement = document.createElement('');
myElement.innerHTML = «blabal»;
node.appendChild(myElement);
};
var t1 = new Date().getTime();
Люди! давайти не разводить холливар! Тут, надеюсь, все понимают, что варез плохо, и что авторские права нужно соблюдать.
На самом деле качать по этой ссылке книгу я никого не заставляю… Мне кажется, что Вы все такие правильные, только не можете устоять и побороть себя когда видите шару на что-то. Можно качнуть, а потом сказать, что и креатив не о том, да и автор как-то не вызывает уважения.
Давайте по-честному, всем кому это не надо и против этого — мне минус и млюс товарищу — tzman (он первый кинул камень в мой огород), кстати я за него очень рад, что у него есть лишние 40$ на приобретение литературы.
Если нет — и комуто это пригодится, то просто напишите об этом :-)
Знаете, я не буду не перед кем оправдывать, и перед Вами в том числе… Просто многие студенты, изучающие компьютерные науки, да и те же программисты не имеют лишних денег на кники ценой в 40 долларов, которые еще к томуже приходится ждать…
Я не говорю, что это хорошо нарушать авторское право. Но если эта ссылка поможет хоть комуто одному, то я буду очень рад, даже если получу 1000 минусов и 1000 человек скажет мне свое ФЕ по этому поводу…
Да, иногда это удобно, особенно вместо того чтобы создавать составной индекс по нескольким полям (который будет достаточно большой), можно создать по одному полю, например используя ф-ию MD5 (128 бит, запись состоит из 32 символов) или если мы хотим подстраховаться больше то лучше использовать Sha1 (160 бит, 40 символов) нежели CRC32 (32 бита, беззнаковое число)
И соответственно запросы примут вид
так просто большая вероятность того, что значения CRC32 совпадут, особенно если в таблице много записей.
Ну и соответственно индекс поставить не на все поле, а на какую-то его часть.
>правда я не понял что вы имели ввиду — что в этом поле — text или например varchar(1000)?)
например URI (varchar(100))
>Вы уверены, насчет crc32?
Да :-)
Все зависит от того на какой манер произносить :-)
select article_id from articleы where author_id = 1 (эту часть можно держать в мемкеше уже)
Но статистику можно смотреть не только по каждому автору но и по всем новостям вцелом, т.е. каждый автор может смотреть как общую статистику, так и свою лично.
WHERE mail LIKE '%@gmail.com'
чтобы достать всех пользователей с указанным доменным именем.
Проще вставлять записи в реверс-порядке и делать индекс по этому полю по первым, скажем, 8 байтам.
Соответственно доменные имена будут вначале, а запрос примет вид
WHERE mail LIKE 'moc.liamg@%'
<html> <head> <script> function work() { var t = new Date().getTime(); var node; for(i = 0; i<1000; i++){ node = document.getElementById('someID'); var myElement = document.createElement('div'); myElement.innerHTML = "blabal"; node.appendChild(myElement); }; var t1 = new Date().getTime(); alert(t1-t); } </script> </head> <body> <div id="someID"></div> <input type="button" onclick="work()" value="Test" /> </body> </html>у меня Chrome — 25-28
ФФ 75-80
var t = new Date().getTime();
var node;
for(i = 0; i<1000; i++){
node = document.getElementByID('someID');
var myElement = document.createElement('');
myElement.innerHTML = «blabal»;
node.appendChild(myElement);
};
var t1 = new Date().getTime();
Например, для меня наиболее интересно как быстро интерпретатор JS работает с DOM объектами
т.е. как быстро выполняются ф-ии
document.getElementByID('someID');
document.getElementsByTagName('someName');
например такой тестик
var t = new Date().getTime();
var node;
for(i = 0; i<1000; i++){
node = document.getElementByID('someID');
var myElement = document.createElement('');
myElement.innerHTML = «blabal»;
node.appendChild(myElement);
};
var t1 = new Date().getTime();
На самом деле качать по этой ссылке книгу я никого не заставляю… Мне кажется, что Вы все такие правильные, только не можете устоять и побороть себя когда видите шару на что-то. Можно качнуть, а потом сказать, что и креатив не о том, да и автор как-то не вызывает уважения.
Давайте по-честному, всем кому это не надо и против этого — мне минус и млюс товарищу — tzman (он первый кинул камень в мой огород), кстати я за него очень рад, что у него есть лишние 40$ на приобретение литературы.
Если нет — и комуто это пригодится, то просто напишите об этом :-)
Я не говорю, что это хорошо нарушать авторское право. Но если эта ссылка поможет хоть комуто одному, то я буду очень рад, даже если получу 1000 минусов и 1000 человек скажет мне свое ФЕ по этому поводу…
Очень мало чего стоящего по мускулу можно прочитать.
www.mysqlperformanceblog.com/ только спасает :-) периодически