Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Слабые стороны Cache & SQL
|
|||
|---|---|---|---|
|
#18+
Sergei Obrastsovнадо полагать вопрос к народу, занимающемуся Cache-SQL? я работаю с массивами напрямую. причём здесь SQL... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2006, 16:22 |
|
||
|
Слабые стороны Cache & SQL
|
|||
|---|---|---|---|
|
#18+
SergSuperКак уже вами не раз упомяналось типизации нет, числа хранятся строчками и следовательно "2" будет больше чем "111". По стандарту если строки являются представлениями чисел то в индексном сравнении они сравниваются как числа, поэтому в индексе "2" сортируется перед "111". Имплементации мампса могут поддерживать (дополнительно) задание других соглашений, в частности строковой безотносительно содержания. В ней "2" пойдет после "111". По умолчанию сортировка индексная. Код: plaintext 1. 2. 3. 4. SergSuperЗначит ли это что фактически для чисел можно использовать только запросы где есть точное сравнение? Т.е. запросы типа i between 2 and 111 или просто i>2 использовать нельзя Если я не прав то объясните как это решается Имеется ввиду конечно использование индексного поиска Код: plaintext Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2006, 16:27 |
|
||
|
Слабые стороны Cache & SQL
|
|||
|---|---|---|---|
|
#18+
pavelvp Sergei Obrastsovнадо полагать вопрос к народу, занимающемуся Cache-SQL? я работаю с массивами напрямую. причём здесь SQL... а причем тут "запросы типа i between 2 and 111 или просто i>2"? впрочем ладно, может я просто неправильно воспринимаю. но я все-равно ответил, числа отсортируются правильно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2006, 16:33 |
|
||
|
Слабые стороны Cache & SQL
|
|||
|---|---|---|---|
|
#18+
ну яUSER>s i=2 f s i=$o(a(i)) q:(i="")!'(111]]i) w i,! 3 34 [/src] а зачем так мудрить "'(111]i)"? не проще написать i>111, все-равно ведь известно, что там числа? :) С уважением. Сергей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2006, 16:37 |
|
||
|
Слабые стороны Cache & SQL
|
|||
|---|---|---|---|
|
#18+
Sergei Obrastsov ну яUSER>s i=2 f s i=$o(a(i)) q:(i="")!'(111]]i) w i,! 3 34 [/src] а зачем так мудрить "'(111]i)"? не проще написать i>111, все-равно ведь известно, что там числа? :) С уважением. Сергей Инерция мышления. Привычка работать только с параметрами как таковыми. Кстати, условие выхода i>111 пустит в цикл также и 111, то есть нужно i'<111. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2006, 17:16 |
|
||
|
Слабые стороны Cache & SQL
|
|||
|---|---|---|---|
|
#18+
ну яПо стандарту если строки являются представлениями чисел то в индексном сравнении они сравниваются как числа, поэтому в индексе "2" сортируется перед "111". Стоп. А если это должны быть все-таки строки? Все равно как числа будут сортироваться? Если типизации нет, и все хранится как строки, то как он отличает строку "111" от строкового представления числа 111? Или никак не отличает, а просто сортирует строки "неправильно"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2006, 17:23 |
|
||
|
Слабые стороны Cache & SQL
|
|||
|---|---|---|---|
|
#18+
Т.е. если есть набор строк: Код: plaintext 1. 2. 3. 4. 5. Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2006, 17:37 |
|
||
|
Слабые стороны Cache & SQL
|
|||
|---|---|---|---|
|
#18+
Пьяный Лох ну яПо стандарту если строки являются представлениями чисел то в индексном сравнении они сравниваются как числа, поэтому в индексе "2" сортируется перед "111". Стоп. А если это должны быть все-таки строки? Все равно как числа будут сортироваться? Если сортировка должна быть как строк, то нужно выставлять глобали ascii collation если его поддерживает имплементация либо насильно приводить строку к виду, не представляющему число, например приписать спереди пробел. Обычно для переносимости пользуются вторым вариантом. Пьяный ЛохЕсли типизации нет, и все хранится как строки, то как он отличает строку "111" от строкового представления числа 111? Или никак не отличает, а просто сортирует строки "неправильно"? Есть детальное описание (в стандарте) того, что называется каноническим представлением числа. Полное определение довольно длинное, не буду приводить. Например "2" это число, а "2.00" или "2." это уже строки. Речь идет именно о каноническом представлении чисел для индексной сортировки, ни о чем другом. Если работать с мампсом, то путаницы обычно ни у кого не возникает более одного раза ))). Выяснить что из себя есть каноническое и неканоническое представление можно через операцию +: значение переменной str есть каноническое представление числа если +str=str. Исключения и нюансы - с плавающей точкой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2006, 17:48 |
|
||
|
Слабые стороны Cache & SQL
|
|||
|---|---|---|---|
|
#18+
Пьяный ЛохТ.е. если есть набор строк: Код: plaintext 1. 2. 3. 4. 5. Код: plaintext 1. 2. 3. 4. 5. при числовой сортировке именно так. есть правда маленькая деталь, а нафига совать в индекс разные логические типы данных? там где нужны числа у меня будут числа, а там где строки - строки С уважением. Сергей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2006, 17:52 |
|
||
|
Слабые стороны Cache & SQL
|
|||
|---|---|---|---|
|
#18+
2 ну я Пьяный Лох ну яПо стандарту если строки являются представлениями чисел то в индексном сравнении они сравниваются как числа, поэтому в индексе "2" сортируется перед "111". Стоп. А если это должны быть все-таки строки? Все равно как числа будут сортироваться? Если сортировка должна быть как строк, то нужно выставлять глобали ascii collation если его поддерживает имплементация либо насильно приводить строку к виду, не представляющему число, например приписать спереди пробел. Обычно для переносимости пользуются вторым вариантом. Оп-ля... Это как это - "приписать пробел"? У меня строка безо всякого пробела в начале, однако. С какой радости я её модифицировать должен? ----------- 2 Sergei Obrastsov при числовой сортировке именно так. есть правда маленькая деталь, а нафига совать в индекс разные логические типы данных? там где нужны числа у меня будут числа, а там где строки - строки Нафига? Не знаю... А нафига отсутствие типизации сделали? Значит это кому-нибудь нужно? Если это кому-нибудь нужно - наверное и работать с этим кому-нибудь приходится? Были бы типы данных - не было бы таких вопросов. Поле числового типа сортировалось бы как набор чисел, и строку туда нельзя было бы записать, а в поле строкового типа можно было бы записать любую строку (хоть бы даже и содержащую "каноническое представление числа"), и сортировалось бы это как набор строк. А так получается, что я могу записать в одно и то же поле и "строки", и "числа" (и это действительно иногда нужно). И если "строковое" подмножество содержит что-то, по несчастливой случайности совпадающее по внешнему виду с "каноническим представлением числа" - то отсортировать корректно полученное множество уже никак не получится, патамушта либо часть "строк" уедет в область "чисел" (при "числовой" сортировке), либо "числа" будут сортироваться как "строки" (при выставленном ascii collation'е для глобали). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2006, 18:08 |
|
||
|
Слабые стороны Cache & SQL
|
|||
|---|---|---|---|
|
#18+
Пьяный Лох2 ну я Пьяный Лох ну яПо стандарту если строки являются представлениями чисел то в индексном сравнении они сравниваются как числа, поэтому в индексе "2" сортируется перед "111". Стоп. А если это должны быть все-таки строки? Все равно как числа будут сортироваться? Если сортировка должна быть как строк, то нужно выставлять глобали ascii collation если его поддерживает имплементация либо насильно приводить строку к виду, не представляющему число, например приписать спереди пробел. Обычно для переносимости пользуются вторым вариантом. Оп-ля... Это как это - "приписать пробел"? У меня строка безо всякого пробела в начале, однако. С какой радости я её модифицировать должен? Перед записью берешь и пишешь используя не твое значение а конкатенацию его с пробелом спереди. При получении значения из индекса первый символ отбрасываешь. А про радость не могу ничего сказать - это нетехнический вопрос. Пока не вижу чего тут пугаться или радоваться - соглашение о правиле индексной сортировке на редкость практичное. Если бы в мампсе была типизация - то мы бы зашились с этими типами. Есть куча систем которые должны быть по своему устройству (как следствие их назначения) непрерывно изменяемы. В первую очередь бизнес-ориентированные. Если нам еще и типами заниматься - зашились бы точно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2006, 18:23 |
|
||
|
Слабые стороны Cache & SQL
|
|||
|---|---|---|---|
|
#18+
Пьяный ЛохБыли бы типы данных - не было бы таких вопросов. Поле числового типа сортировалось бы как набор чисел, и строку туда нельзя было бы записать, а в поле строкового типа можно было бы записать любую строку (хоть бы даже и содержащую "каноническое представление числа"), и сортировалось бы это как набор строк. интересно, как будет выглядеть массив, где все индексы рассортированы по разным принципам? :) и зачем вот это "нельзя записать"? я сам строю БД и решаю куда что писать. А так получается, что я могу записать в одно и то же поле и "строки", и "числа" (и это действительно иногда нужно). И если "строковое" подмножество содержит что-то, по несчастливой случайности совпадающее по внешнему виду с "каноническим представлением числа" - то отсортировать корректно полученное множество уже никак не получится, патамушта либо часть "строк" уедет в область "чисел" (при "числовой" сортировке), либо "числа" будут сортироваться как "строки" (при выставленном ascii collation'е для глобали). можно пример такой необходимости, что-то я навскидку ничего представить не могу? ну, так не бывает, чтобы нельзя было отсортировать. числа четко проверяются на принцип "str=+str", как справедливо заметил "ну я". только это не операция на уровне "послать запрос 2<i<111 и получить список" это несколько другой уровень абстракции С уважением. Сергей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2006, 18:37 |
|
||
|
Слабые стороны Cache & SQL
|
|||
|---|---|---|---|
|
#18+
2 ну я Перед записью берешь и пишешь используя не твое значение а конкатенацию его с пробелом спереди. При получении значения из индекса первый символ отбрасываешь. Т.е. все строки - с пробелом в начале? И тогда уж не "первый символ отбрасываешь", а "первый символ анализируешь, если пробел - отбрасываешь"? Если бы в мампсе была типизация - то мы бы зашились с этими типами. Есть куча систем которые должны быть по своему устройству (как следствие их назначения) непрерывно изменяемы. В первую очередь бизнес-ориентированные. Если нам еще и типами заниматься - зашились бы точно. Да ладно Вам. Я даже не буду спорить с тем, что иногда сильная типизация хуже, чем слабая (но только иногда, имхо). Речь не про то. Если уж система расчитана на слабую типизацию - кто мешает факт наличия этой самой слабой типизации унутре себя учесть? Хранили бы в месте со значением переменной еще один байт - "тип", не имели бы проблем с определением этого самого типа. Собственно предложенное решение ("при записи конкатенируешь с пробелом, при чтении пробел выкидываешь") и есть та самая информация о типе значения. Тока почему-то не на уровне системы, а ручками делать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2006, 18:39 |
|
||
|
Слабые стороны Cache & SQL
|
|||
|---|---|---|---|
|
#18+
2 Sergei Obrastsov интересно, как будет выглядеть массив, где все индексы рассортированы по разным принципам? :) Кто мешает-то? В чем проблема отсортировать по разному? По-моему проблемы с сортировкой нет, более того, в вашем М именно по разному и сортируется - числа одним способом, строки другим, между собой еще как-то. Только у вас проблема с невозможностью определения типа для некоторых значений. можно пример такой необходимости, что-то я навскидку ничего представить не могу? Это мумпсисты должны примеры приводить, когда необходимо в одном поле хранить разнотипные переменные. Все ж из их лагеря раздаются крики о том, что слабая типизация это хорошо, и без этого "зашились бы". Если бы такой необходимости не было бы - то и хранили бы себе в одном поле значения строго одного типа, и не вносили бы в стандарты способов "индексного сравнения чисел со строками". ну, так не бывает, чтобы нельзя было отсортировать. числа четко проверяются на принцип "str=+str", как справедливо заметил "ну я". Я Вам еще раз повторяю - таким образом вы не отличите строку "111" от строкового представления числа 111. Так что не четко проверяются. Можно лишь четко определить случай, когда строка НЕ является строковым представлением числа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2006, 18:51 |
|
||
|
Слабые стороны Cache & SQL
|
|||
|---|---|---|---|
|
#18+
Пьяный Лох2 ну я Перед записью берешь и пишешь используя не твое значение а конкатенацию его с пробелом спереди. При получении значения из индекса первый символ отбрасываешь. Т.е. все строки - с пробелом в начале? И тогда уж не "первый символ отбрасываешь", а "первый символ анализируешь, если пробел - отбрасываешь"? ))) Я, конечно, понимаю, что хочется повыделываться, но это неверное правило. Если вам придется работать с мампсом, вы сами себя переубедите, на простых контрольных примерах. А если не придется - то не берите в голову. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2006, 18:54 |
|
||
|
Слабые стороны Cache & SQL
|
|||
|---|---|---|---|
|
#18+
ну яэто неверное правило. Тогда какое верное? Не всем строкам пробел спереди приписывать? А каким? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2006, 18:58 |
|
||
|
Слабые стороны Cache & SQL
|
|||
|---|---|---|---|
|
#18+
Если вам придется работать с мампсом не дай бог :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2006, 18:58 |
|
||
|
Слабые стороны Cache & SQL
|
|||
|---|---|---|---|
|
#18+
Пьяный ЛохЭто мумпсисты должны примеры приводить, когда необходимо в одном поле хранить разнотипные переменные. Все ж из их лагеря раздаются крики о том, что слабая типизация это хорошо, и без этого "зашились бы". Гнать не нужно. Никто вам ничего не должен, не выдумывайте. И криков никаких нет и лагеря никакого нет. Пьяный ЛохЯ Вам еще раз повторяю - таким образом вы не отличите строку "111" от строкового представления числа 111. А зачем это может понадобиться? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Вот для чего это необходимо, хотелось бы понять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2006, 19:04 |
|
||
|
Слабые стороны Cache & SQL
|
|||
|---|---|---|---|
|
#18+
Пьяный Лох ну яэто неверное правило. Тогда какое верное? Не всем строкам пробел спереди приписывать? А каким? Быстрый вопрос - проявление нежелания подумать даже немного. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2006, 19:07 |
|
||
|
Слабые стороны Cache & SQL
|
|||
|---|---|---|---|
|
#18+
Пьяный Лох2 Sergei Obrastsov интересно, как будет выглядеть массив, где все индексы рассортированы по разным принципам? :) Кто мешает-то? В чем проблема отсортировать по разному? По-моему проблемы с сортировкой нет, более того, в вашем М именно по разному и сортируется - числа одним способом, строки другим, между собой еще как-то. Только у вас проблема с невозможностью определения типа для некоторых значений. а зачем мне это может понадобиться-то? за кучу лет я сортировал индексы строковым способом только один раз, это помогло значительно уменьшить скорость поиска. но это была очень хитрая структура. сортируется вообще-то в М все одинаково (в цифровой сортировке), но для хитрожопых дается еще и строковая (раз уж приперло, как скажем меня). но правило распространяется на весь массив, а не на отдельный уровень. можно пример такой необходимости, что-то я навскидку ничего представить не могу? Это мумпсисты должны примеры приводить, когда необходимо в одном поле хранить разнотипные переменные. ну вот он я, "мумпсист", и я спрашиваю - "нафига"? у меня никогда не было такой необходимости. а если уж в индекс попадают строки вперемежку с числами, значит это не числа, а просто строки из цифровых символов. и абсолютно все-равно как они там хранятся. ну, так не бывает, чтобы нельзя было отсортировать. числа четко проверяются на принцип "str=+str", как справедливо заметил "ну я". Я Вам еще раз повторяю - таким образом вы не отличите строку "111" от строкового представления числа 111. Так что не четко проверяются. Можно лишь четко определить случай, когда строка НЕ является строковым представлением числа. я прошу прощения, конечно, но я не вижу разницы между 111 и "111": Код: plaintext 1. 2. учту при выводе, раз уж так кому-то захотелось. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2006, 19:10 |
|
||
|
Слабые стороны Cache & SQL
|
|||
|---|---|---|---|
|
#18+
ну я Пьяный ЛохЯ Вам еще раз повторяю - таким образом вы не отличите строку "111" от строкового представления числа 111. А зачем это может понадобиться? Код: plaintext 1. 2. А что, такого не может быть: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2006, 19:10 |
|
||
|
Слабые стороны Cache & SQL
|
|||
|---|---|---|---|
|
#18+
в общем ладно, рассказывать людям, что число это число, а строка это строка - занятие неблагодарное. не видите разницу между "111" и 111 - говорить наверное больше не о чем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2006, 19:14 |
|
||
|
Слабые стороны Cache & SQL
|
|||
|---|---|---|---|
|
#18+
Пьяный Лох ну я Пьяный ЛохЯ Вам еще раз повторяю - таким образом вы не отличите строку "111" от строкового представления числа 111. А зачем это может понадобиться? Код: plaintext 1. 2. А что, такого не может быть: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Нет, первых три случая не может быть. Четвертый должен быть. Если нужна конкатенация - то ее и нужно использовать. Обозначается подчеркиванием. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2006, 19:17 |
|
||
|
Слабые стороны Cache & SQL
|
|||
|---|---|---|---|
|
#18+
ну яНет, первых три случая не может быть. Четвертый должен быть. Если нужна конкатенация - то ее и нужно использовать. Обозначается подчеркиванием. Ок. Это, видимо, вопрос синтаксиса. Что вернется в результате такой операции: Код: plaintext Т.е. операция "+" перегружена (в зависимости от типов операндов), или четко и строго является арифметическим сложением двух чисел (и ничем другим являться не может)? Я, пардон, синтаксиса мумпса не знаю, потому и спрашиваю. Можно в какой-нибудь онлайн хелп послать, не обижусь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2006, 20:25 |
|
||
|
Слабые стороны Cache & SQL
|
|||
|---|---|---|---|
|
#18+
Пьяный ЛохЧто вернется в результате такой операции: Код: plaintext Т.е. операция "+" перегружена (в зависимости от типов операндов), или четко и строго является арифметическим сложением двух чисел (и ничем другим являться не может)? + это арифметическая операция. Аргументы приводятся к числу. Из строки берется первая часть подходящая под число, остальное отбрасывается. Если не подошло ни одного символа то 0. В приведенном случае будет 0. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. тынц ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2006, 21:12 |
|
||
|
|

start [/forum/topic.php?fid=35&msg=33736794&tid=1553584]: |
0ms |
get settings: |
6ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
106ms |
get topic data: |
5ms |
get forum data: |
1ms |
get page messages: |
34ms |
get tp. blocked users: |
1ms |
| others: | 196ms |
| total: | 364ms |

| 0 / 0 |
