- 1
- 2
- 3
- 4
- 5
QSqlQuery my_query;
my_query.prepare(
QString("INSERT INTO table1 (number, address, age) VALUES (%1, '%2', %3);")
.arg(fromInput1).arg(fromInput2).arg(fromInput3)
);
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+64
QSqlQuery my_query;
my_query.prepare(
QString("INSERT INTO table1 (number, address, age) VALUES (%1, '%2', %3);")
.arg(fromInput1).arg(fromInput2).arg(fromInput3)
);
Жаль, но похоже автор не осилил экранирование от SQL-иньекций.
LispGovno 19.04.2014 22:31 # 0
И кстати полнотекстовой поиск в нормальных БД только по слову целеком ищет или может и по части слова? Слышал что SQLite может только слова индексировать полностью, а не их части.
bormand 19.04.2014 23:41 # +2
LispGovno 20.04.2014 07:35 # 0
И мне интересно почему они всегда строят деревья вместо возможности заюзать хештаблицы аля мапа слово на позицию.
bormand 20.04.2014 08:04 # +1
> вместо возможности заюзать хештаблицы аля мапа слово на позицию
Потому что будет слишком дохуя?
LispGovno 20.04.2014 16:29 # 0
А чем мапа из дерева меньше мапы из хештаблицы?
bormand 20.04.2014 18:43 # +2
Поэтому в том же постгресе сделано так: И индекс строится уже по нормализованным словам. И ищет более-менее мягко, и индексы не так уж пухнут, как если в них забивать все-все-все куски...
LispGovno 20.04.2014 18:46 # 0
Чё это вдруг? Чем хештаблица не устроила то?
bormand 20.04.2014 18:49 # 0
Что во что твоя карта будет отображать?
P.S. Я не особо шарю в кишках GiST и GIN индексов ;( Более того, для меня они чорная магия.
bormand 20.04.2014 18:53 # 0
LispGovno 20.04.2014 18:56 # 0
В гуглокартинках по обоим гуглится такая жопа, что я чуть не проблювался. Особенно от первого.
Ладно первое я ещё могу представить. Второе - это что?
Допустим все префиксы всех слов мы скидали в хештейбл. Получилась здоровая ёба. Собственно мапим например 'джигурд' на строку таблицы.
bormand 20.04.2014 19:07 # +1
Да нафига они нужны? Это же только дичайше раздует индекс (мелкие префиксы встречаются в дохера и больше строк), да добавит ложных сработок (по слову 'ху' будет искаться и 'хуй' и 'художник' и 'хутор'...). Ну и по серединам слов один хрен искать не будет :(
P.S. Надеюсь ты не предлагаешь потом искать все префиксы искомых слов в этой мапе (чтобы по 'художнику' находился 'хуй')? :)
Поэтому и выбрали более-менее разумную альтернативу - тупо обрезать окончания у слов. В оракле и M$ может быть и по-другому, надо дождаться d++ или dbdev...
LispGovno 20.04.2014 19:09 # 0
Имел в виду просто слова без окончаний мапить на строку. Я не предлагал строить префиксные деревья или забивать мапу всеми префиксами одного слова
bormand 20.04.2014 19:16 # 0
Дык постгрешный GIN и sqlite вроде так и делают?
LispGovno 20.04.2014 19:25 # 0
Единственное предположение у меня в том, что часто < нужно делать, но вот в случае поиска подстроки < уже не нужно. Так что это не оправдание, а вот самое главное оправдание видимо рехешинг при расширении. И он видимо дохрена долгий
bormand 20.04.2014 19:41 # 0
И локальности нету - в хеш-табличках же стоящие рядом ключи размазаны по всей таблице, в в дереве - стоят рядом. (Хотя в этой конкретной задаче локальность вроде как и не нужна).
roman-kashitsyn 22.04.2014 18:42 # 0
вероятно, индексы лежат на диске, а в этом случае локальность очень даже нужна. Мало кто захочет при изменении одного нода перезаписывать весь индекс целиком.
Я тут как раз just for lulz пишу биграмный поиск на крестах, тема близка :) У меня только in-memory, потому юзаю хэш-таблицы.
LispGovno 22.04.2014 19:11 # 0
Поиск в тексте по двум символам?
LispGovno 20.04.2014 19:26 # 0
bormand 20.04.2014 19:29 # 0
bormand 20.04.2014 19:34 # +1
А вот здесь все индексы, какие там есть.
LispGovno 20.04.2014 19:39 # +1
@>
Няшно. Пошел читать.
Питушки мотивируют.
LispGovno 20.04.2014 19:13 # 0
DBdev 22.04.2014 18:26 # 0
Какие-то мапы строят в MS: http://technet.microsoft.com/en-us/library/ms142505(v=sql.105).aspx
bormand 20.04.2014 08:11 # +1
defecate-plusplus 20.04.2014 00:47 # +2
в оракле да, Oracle Text доступен даже в Express Edition, хотя, вроде, раньше имелся только начиная со Standard
DBdev 22.04.2014 18:24 # +1
В MS SQL Server-e полнотекстовой поиск является отдельным сервисом (есть во всех версиях, кроме экспресс), который надо отметить галкой при установке, запускается отдельно от ядра СУБД (хотя часть поиска всё-же есть в ядре). По-умолчанию не включён.
bormand 19.04.2014 23:40 # +3
LispGovno 20.04.2014 07:38 # +1
bormand 20.04.2014 08:15 # +2
На ненормальных тоже норм. По крайней мере кутишный драйвер БД разбирается в экранировке намного лучше юзера :)
Олсо там есть баг: http://govnokod.ru/12077