|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
Всем привет. Кто делал поиск по базе с препарированием по заранее неизвестному количеству полей? Как при этом запрос выглядит и параметры указываются? Типа есть поле id и name. Юзер может искать по одному из этих полей, а может и по обоим сразу. Как быть в этом случае? 3 текста запроса прописывать - это ж не комильфо ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2018, 14:57 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
Korcar, Без параметров. Склейкой строк. Не рекомендуется. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2018, 15:02 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
Petro123Korcar, Без параметров. Склейкой строк. Не рекомендуется. склейкой строк? ну это же фу ... а если столбцов поиска 10шт, тогда как? неужели в такой сложной технологии нет простого решения по мультиколоночному поиску? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2018, 15:06 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
Korcarнеужели в такой сложной технологии что в ней сложного? Korcarпростого решения по мультиколоночному поиску и как это должно работать, если правила применения критериев известны только тебе? ну например, что ID нужно искать по условию = , name по ilike '%value%', a personalNumber пo like 'value%'? я бы не стал заниматься преждевременной оптимизацией - динамический запрос с параметрами скорее всего закроет вопрос. Главное чтобы поиск происходил по индексу, тут уже зависит от возможностей БД. Если у тебя база от такого прогибается, то возможно нужно радикально другое решение. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2018, 15:17 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
В простом случае можно написать под себя генератор SQL-запроса по переданным значениям. В сложном случае внезапно может получиться MyBatis, поэтому можно сразу попробовать с него. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2018, 15:17 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
Аффтар! Сегодня не пятница. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2018, 15:50 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
KorcarЮзер может искать по одному из этих полей, а может и по обоим сразу. Как быть в этом случае? 3 текста запроса прописывать - это ж не комильфосредствами sql решается просто. но для этого надо сформировать sql строку. тут StringBuilder рулит . один из вариантов для mysql ввёл юзер : Код: plaintext
Код: sql 1. 2. 3. 4.
по скорости - mysql 5.7.23 - 2 950 000 записей - 1.14сек - любое количество полей ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2018, 16:13 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
вадя.... like '%65%' Для Oracle и других серьезных СУБД - говнокод, который: 1) может замусоривать SGA (system global area). В наиболее продвинутых случаях, может даже приводить к эффекту "все стоит колом" 2) т.к. каждый запрос уникальный, будет hard parse. Есть опция позволяющая даже такой говнокод свести в soft parse, но она может вызывать проблемы и так далее если можно использовать Bind переменные, их использвать практически __обязательно__. AFAIK ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2018, 16:22 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
в процессе склеевания SQL подсчитать кол-во Bind переменных и потом их вставить - не слишком сложно (хотя код, конечно, получается в 2-а раза длиннее) 3 текста запроса прописывать - это ж не комильфо Иногда это единственный выход (((. Если от параметров запроса сильно съезжает план выполнения. Для разных наборов приходится делать разные запросы или хинтовать. AFAIK В принципе, если табличка одна и планы выполнения не важны, то можно всегда передавать все возможные параметры Типа: SELECT * FROM table WHERE (:param1 is null OR table.field1 = :param1 ) and (:param2 is null OR table.field2 = :param2 ) and .... Но этот "легкий" вариант, может намертво угробить план запросов. Т.ч. так лучше не делать. AFAIK ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2018, 16:26 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
Leonid KudryavtsevДля Oracle и других серьезных СУБД - говнокод, который:про оракл не отвечаю, а mssql и mysql работает на отлично ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2018, 16:27 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
вадяStringBuilder рулит .... про оракл не отвечаю, а mssql и mysql работает на отлично А как проблемы с безопасностью (SQL Injection) обходишь? Одного StringBuilder'а явно не достаточно ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2018, 16:30 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
Самый главный пункт забыл ))) говнокод, который: 1) подвержен SQL Injection 2) может замусоривать SGA (system global area). В наиболее продвинутых случаях, может даже приводить к эффекту "все стоит колом" 3) т.к. каждый запрос уникальный, будет hard parse. Есть опция позволяющая даже такой говнокод свести в soft parse, но она может вызывать проблемы и так далее если можно использовать Bind переменные, их использвать практически __обязательно__. AFAIK ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2018, 16:31 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
Leonid KudryavtsevА как проблемы с безопасностью (SQL Injection) обходишь? Одного StringBuilder'а явно не достаточно )))ожидаемый вопрос :) я не зря написал вадяодин из вариантов для mysql я принципиально использую только хранимки а в них динамичесий запрос https://dev.mysql.com/doc/refman/8.0/en/sql-syntax-prepared-statements.html и ни каких проблем с инъекциями ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2018, 16:39 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
Ваш пример - запрос с литералами. Даже по Вашей ссылке на "Prepared SQL Statement Syntax" первый же пример, создание запроса с биндами. Клеет запросы и вклеевать туда литералы - плохой стиль. Если можно через Bind - нужно делать через Bind. Кода, конечно, будет больше (практически ровно в 2-а раза) AFAIK ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2018, 16:50 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
Leonid KudryavtsevВаш пример - запрос с литералами. Даже по Вашей ссылке на "Prepared SQL Statement Syntax" первый же пример, создание запроса с биндами.по ссылке mysql 8.0, я же указал 5.7. хоть 8.0 и идёт после 5.7 , но это достаточно большие разницы и я показал как основу, оптимизация и улучшения - по месту только поощряется ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2018, 16:57 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
я уже давно применяю такое для поиска и отображения найденного после каждого введённого символа, только для ограничения вывода использую limit 5 ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2018, 17:07 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
вадясредствами sql решается просто. но для этого надо сформировать sql строку. тут StringBuilder рулит . один из вариантов для mysql ввёл юзер : Код: plaintext
Код: sql 1. 2. 3. 4.
по скорости - mysql 5.7.23 - 2 950 000 записей - 1.14сек - любое количество полейа зачем вы так сложно делаете? добавьте новое поле и заполняйте его тригером, тогда concat_ws не нужен будет и вообще залетает все. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2018, 17:21 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
Андрей Панфилова зачем вы так сложно делаете? добавьте новое поле и заполняйте его тригером, тогда concat_ws не нужен будет и вообще залетает все.это всё можно и возможно сделать - нужно смотреть по конкретному случаю. у меня в базе набор товара не достигал и 50 000, поэтому дополнительной оптимизации не требовалось. счас появилась база в 2,9м - тут и требуется оптимизировать. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2018, 17:41 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
вопрос не имеет отношения к JDBC. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2018, 18:40 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
Partisan Mвопрос не имеет отношения к JDBC. это точно. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2018, 19:00 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
Partisan Mвопрос не имеет отношения к JDBC. может в драйверах есть какие-то расширенные функции. там ж куча классов автор1) подвержен SQL Injection удалять или дублировать кавычки, если таковые есть в передаваемых параметрах не решат проблему? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2018, 07:05 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
Korcarможет в драйверах есть какие-то расширенные функции. там ж куча классовдля чего? Склейка строк она и в Африке склейка. Зайди на ветку СУБД, там тебе тоже самое скажут. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2018, 07:22 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
Korcarудалять или дублировать кавычки, если таковые есть в передаваемых параметрах не решат проблему?много что надо контролировать.... решение проблемы - хранимые процедуры. Petro123Склейка строк она и в Африке склейка. единственное - если обрабатывать строки в хранимых процедурах - возможно будет быстрее ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2018, 07:42 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
Petro123Korcarможет в драйверах есть какие-то расширенные функции. там ж куча классовдля чего? Склейка строк она и в Африке склейка. Зайди на ветку СУБД, там тебе тоже самое скажут. Заранее мне это не было известно, иначе б не спрашивал. По факту всё программирование - это строки и можно ляпать их в обычном блокнотике даже без подсветки синтаксиса, но почему-то большинство предпочитают ИДЕ и прочие удобства ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2018, 08:15 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
KorcarЗаранее мне это не было известно, иначе б не спрашивал.в том то и дело что это известно заранее - это не параметры запроса , это сам запрос. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2018, 08:23 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
KorcarПо факту всё программирование - это строкиты забыл про дезигн тайм и ран тайм))) Колонки у программистов в стадии проектирования. Программист? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2018, 08:31 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
вадя, В хранимках тоже моветон. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2018, 08:32 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
Petro123Korcar, Без параметров. Склейкой строк. Не рекомендуется. Таки динамическое формирование запроса - наиболее правильное решение. Для этого существует масса API: Criteri API, QueryDSL/jOOQ, Apache DdlUtils. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2018, 09:06 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
Korcarсклейкой строк? ну это же фу ... а если столбцов поиска 10шт, тогда как? неужели в такой сложной технологии нет простого решения по мультиколоночному поиску? Части запроса типовые. Поэтому хоть 10 колонок, хоть 100. Какая разница? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2018, 09:07 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
Petro123В хранимках тоже моветон.??? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2018, 10:36 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
вадяPetro123В хранимках тоже моветон.???зайди в оракл и спроси, как там к динамическому sql относятся. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2018, 10:44 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
Petro123зайди в оракл и спроси, как там к динамическому sql относятся. не важно как они там относятся. главное что хранимки защищают от инъекций. но есть специальные средства и в ms sql и в mysql https://dev.mysql.com/doc/refman/8.0/en/sql-syntax-prepared-statements.html которые работают. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2018, 11:02 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
вадяне важно как они там относятся. главное что хранимки защищают от инъекций.ты это там скажи. Ответят что дилетанту который не видел план запроса это не важно. Удачи! ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2018, 12:02 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
Petro123ты это там скажи. Ответят что дилетанту который не видел план запроса это не важно. Удачи!будет нужда заняться ораклом... не чуть не медленнее чем отправлять строку запроса . ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2018, 12:19 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
BlazkowiczKorcarсклейкой строк? ну это же фу ... а если столбцов поиска 10шт, тогда как? неужели в такой сложной технологии нет простого решения по мультиколоночному поиску? Части запроса типовые. Поэтому хоть 10 колонок, хоть 100. Какая разница? ага. условий + полтонны ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2018, 12:36 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
вадяKorcarЗаранее мне это не было известно, иначе б не спрашивал.в том то и дело что это известно заранее - это не параметры запроса , это сам запрос. та пофиг. сам запрос тоже можно переобработать чем-то до отправки на выполнение ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2018, 13:09 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
LuchokBlazkowiczЧасти запроса типовые. Поэтому хоть 10 колонок, хоть 100. Какая разница? ага. условий + полтонны Что хотел сказать-то? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2018, 13:10 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
Petro123KorcarПо факту всё программирование - это строкиты забыл про дезигн тайм и ран тайм))) Колонки у программистов в стадии проектирования. Программист? еще скажи, что в БД таблиц нет, а есть только сущности. мне что-то об этом в универе втирали ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2018, 13:11 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
BlazkowiczKorcarсклейкой строк? ну это же фу ... а если столбцов поиска 10шт, тогда как? неужели в такой сложной технологии нет простого решения по мультиколоночному поиску? Части запроса типовые. Поэтому хоть 10 колонок, хоть 100. Какая разница? разница есть в том, куда лучше условия присунуть ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2018, 13:12 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
Korcarразница есть в том, куда лучше условия присунуть Код условий типовой для всех колонок. Если вы не умеете его переиспользовать, это не значит что само решение плохое. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2018, 13:19 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
Korcarта пофиг. сам запрос тоже можно переобработать чем-то до отправки на выполнение???? запрос - это строка и и её уже не переобработать . Korcarеще скажи, что в БД таблиц нет, а есть только сущности. мне что-то об этом в универе втиралимогу сказать что таблица - это куча. Korcarразница есть в том, куда лучше условия присунутьусловия присунуть надо в секцию WHERE строки запроса. Korcarмне что-то об этом в универе втиралину и научили..... ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2018, 14:02 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
BlazkowiczKorcarразница есть в том, куда лучше условия присунуть Код условий типовой для всех колонок. Если вы не умеете его переиспользовать, это не значит что само решение плохое. чтоб значит "типовой для всех колонок"? а обработка чисел и строк как же? он ж отличается. для строк надо кавырки проставлять, для чисел нет зы: не надо тут догадки строить кто и что умеет. тут мемберы разной квалификации. кто-то да что-то всегда не знает. считаешь мой вопрос глупым и не хочешь отвечать по сути. вообще не пиши. какие проблемы?) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2018, 14:07 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
Korcarчтоб значит "типовой для всех колонок"? а обработка чисел и строк как же? он ж отличается. для строк надо кавырки проставлять, для чисел нетне надо так низко опускаться, до элементарного, тут о проблемах спрашивают , а не учат 2+2 решать. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2018, 14:12 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
KorcarТипа есть поле id и name. Юзер может искать по одному из этих полей, а может и по обоим сразу. Как быть в этом случае? 3 текста запроса прописывать - это ж не комильфоесли такой вопрос и нет элементарных знаний работы с базой поле id - это поле с автоинкрементом индексированное и искать по обоим полям id и name - это глупость высшей пробы. либо по id введя полное значение, либо name - like или текстовой поиск. по обоим сразу - это когда одно поле название товара, а второе название производителя если у тебя одно поле для вводя у юзера - то надо предварительно оценить что введено - если число - то считаем это id (как пример ввод со сканера штрихкода) , если строка - значить части названия и тут надо формировать разные запросы . ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2018, 14:23 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
Korcarчтоб значит "типовой для всех колонок"? а обработка чисел и строк как же? он ж отличается. для строк надо кавырки проставлять, для чисел нет Что за чушь? Ненадо никакие "кавырки" ставить когда есть PreparedStatement.setObject(). Korcarзы: не надо тут догадки строить кто и что умеет. тут мемберы разной квалификации. кто-то да что-то всегда не знает. считаешь мой вопрос глупым и не хочешь отвечать по сути. вообще не пиши. какие проблемы?) Обидели мышку? Я считаю разлагольствования в стиле "ой, для сотни колонк мне же придётся сто раз скопипастить целую кучу кода" это показатель. Тут никакие "догадки" не нужны. Вы не написали ни строчки кода в этой теме, но уже ноете что будет сложно. Я эту задачу решал раз пять с разными API. И могу заверить что нет никакой сложности. Колонки отличаются только именем и типом. Код для типов иногда может различаться, но это редкость и недоработка API. В итоге вам достаточно списка имён колонок и значений - параметров запроса, чтобы из них собрать динамический запрос не скатываясь в кучу кода. А если хотите более конкретных советов, то давайте конкретый код. А то, блин, ноют что все ответы говно, а конкретики, как всегда - ноль. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2018, 14:30 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
вадяKorcarчтоб значит "типовой для всех колонок"? а обработка чисел и строк как же? он ж отличается. для строк надо кавырки проставлять, для чисел нетне надо так низко опускаться, до элементарного, тут о проблемах спрашивают , а не учат 2+2 решать. вся суть вопроса свелась к склейке строк. да это элементарно, не спорю, но суть от этого не меняется ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2018, 14:34 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
BlazkowiczKorcarчтоб значит "типовой для всех колонок"? а обработка чисел и строк как же? он ж отличается. для строк надо кавырки проставлять, для чисел нет Что за чушь? Ненадо никакие "кавырки" ставить когда есть PreparedStatement.setObject(). Korcarзы: не надо тут догадки строить кто и что умеет. тут мемберы разной квалификации. кто-то да что-то всегда не знает. считаешь мой вопрос глупым и не хочешь отвечать по сути. вообще не пиши. какие проблемы?) Обидели мышку? Я считаю разлагольствования в стиле "ой, для сотни колонк мне же придётся сто раз скопипастить целую кучу кода" это показатель. Тут никакие "догадки" не нужны. Вы не написали ни строчки кода в этой теме, но уже ноете что будет сложно. Я эту задачу решал раз пять с разными API. И могу заверить что нет никакой сложности. Колонки отличаются только именем и типом. Код для типов иногда может различаться, но это редкость и недоработка API. В итоге вам достаточно списка имён колонок и значений - параметров запроса, чтобы из них собрать динамический запрос не скатываясь в кучу кода. А если хотите более конкретных советов, то давайте конкретый код. А то, блин, ноют что все ответы говно, а конкретики, как всегда - ноль. а как ты предлагаешь использовать PreparedStatement, когда количество параметров и их положение заранее не известны? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2018, 14:39 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
Korcarа как ты предлагаешь использовать PreparedStatement, когда количество параметров и их положение заранее не известны? Не знаю что такое "положение параметров". Но никакой проблемы никогда не испытывал с созданием PrepatedStatement из SQL запроса сформированного динамически ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2018, 14:43 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
Korcarа как ты предлагаешь Весь топик сводиться к препераниям "это же сложно" - "нет это не сложно". Конкретный код когда будем приводить? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2018, 14:46 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
BlazkowiczKorcarа как ты предлагаешь использовать PreparedStatement, когда количество параметров и их положение заранее не известны? Не знаю что такое "положение параметров". Но никакой проблемы никогда не испытывал с созданием PrepatedStatement из SQL запроса сформированного динамически ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2018, 14:47 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
Korcarа как ты предлагаешь использовать PreparedStatement, когда количество параметров и их положение заранее не известны?вот только не надо путать поиск и выборку по числовым поля не ищут, если ты "суперпрограммист субд" и хочешь искать в по числовому полю - то твоё поле превращается в строку и параметр поиска - тоже строка. так что всё опять сводится к работе со строками. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2018, 14:48 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
BlazkowiczKorcarа как ты предлагаешь Весь топик сводиться к препераниям "это же сложно" - "нет это не сложно". Конкретный код когда будем приводить? Это не сложно. ты не верно понимаешь происходящие события. Это муторно, что не одно и то же) откуда взяться конкретному коду, если технология его написания как раз еще только обсуждается здесь? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2018, 14:48 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
Korcarоткуда взяться конкретному коду, если технология его написания как раз еще только обсуждается здесь?технологии уже отработаны давно вопрос выбора для конкретной субд а ты даже субд не назвал ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2018, 14:50 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
KorcarЭто не сложно. ты не верно понимаешь происходящие события. Это муторно, что не одно и то же) Муторно писать самому мини-фреймверки и конкатенацию строк? Тогда берешь готовый API. Список я привел первым ответом. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2018, 14:52 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
вадяKorcarоткуда взяться конкретному коду, если технология его написания как раз еще только обсуждается здесь?технологии уже отработаны давно вопрос выбора для конкретной субд а ты даже субд не назвал ms sql ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2018, 14:54 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
В этой компании на одного дурака приходилось десять умных, так что силы были примерно равны Korcarкак ты предлагаешь использовать PreparedStatement, когда количество параметров и их положение заранее не известны?вот тебе условный код, чтоб ты уже понял идею, доработать по вкусу: еще раз код условный, для описания самой идеи. для продуктивного использования не подходит Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
теперь понятно? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2018, 15:20 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
Код: java 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2018, 16:08 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
вадя это понятно, я просто хотел показать идею построения разных запросов в зависимости от типа параметра - для большего этот код все равно не годится по массе причин ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2018, 16:13 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
chpashaЭто понятно, я просто хотел показать идею построения разных запросов в зависимости от типа параметра - для большего этот код все равно не годится по массе причин а вдруг будут к тебе претензии? ведь возник вопрос про кавычки :) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2018, 16:22 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
ЗЫ Код: sql 1.
звезда - тормоз, надо указывать поля ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2018, 16:23 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
вадязвезда - тормоз, надо указывать поля вопрос индексирования тоже не раскрыт вадяа вдруг будут к тебе претензии? сошлюсь на мелкий шрифт ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2018, 16:29 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
А что надо поиск like a Google? Тема вроде не так начиналась. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 08:18 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
maytonА что надо поиск like a Google? Тема вроде не так начиналась.не знаю как для ТС, но в моей практике - поиск like очень облегчил жизнь менеджерам и ещё лет 20 назад позволил отказаться от сокращённого названия контрагентов, как это было у 1с... у меня было 1 поле с полным названием и элементарно ищется... ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 08:46 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
Топик зашел вникуда. Давайте вернем его в какое-то инженерное русло. Тема гугло-поиска в базах - вызывает зубной скрежет у DBA. Но давайте уберем за скобки конкретную БД. Допустим по ту сторону интерфейса действительно стоит генерализованная БД и мы такие типа а вот бы найди в неизвестной бд все таблицы и все записи где есть строка "blah-blah". Я предлагаю такой интерфейс. Код: java 1. 2. 3. 4. 5. 6. 7.
Юзкейс такой. Устанавливаем свойство connection. Ищем lookup("blah-blah"). В результате получаем список документов типа таблица + список кортежей (строк(сущностей)) где key - название колонки а value - найденные значения где есть искомое "бла-бла". Для простоты будем искать только number и varchar поля. Прочие - в игнор. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 09:57 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
mayton, Да) Но это не jdbc. По jdbc мы запрашиваем у АПИ базы перечень таблиц и их полей и тупо перебираем. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 10:09 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
Petro123mayton, Да) Но это не jdbc. Почему? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 10:16 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
mayton, Может я не понял идею, но выше увидел только декларацию интерфейса. Намерения. Реализацию не увидел. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 10:28 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
maytonТема гугло-поиска в базах - вызывает зубной скрежет у DBA.насколько я смотрел нагрузки при like - если есть память - нет проблем. по твоему идём на поводу dba, и городим на java аналог работы субд - в результате система теряет в быстродействии ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 10:32 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
Petro123mayton, Может я не понял идею, но выше увидел только декларацию интерфейса. Намерения. Реализацию не увидел. Совершенно верно. Я обсуждаю пока только идею на уровне фасада. Или того угла зрения под которым на это будут смотреть. Вам нравится идея? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 10:45 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
mayton...Но давайте уберем за скобки конкретную БД. ... Если в таком ключе, то для IBM Lotus Notes, например, это вполне повседневная обычная задача не вызывающая никаких трудностей. Для CouchDb ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 10:49 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
вадяmaytonТема гугло-поиска в базах - вызывает зубной скрежет у DBA.насколько я смотрел нагрузки при like - если есть память - нет проблем. по твоему идём на поводу dba, и городим на java аналог работы субд - в результате система теряет в быстродействии 1) Like создает нагрузку класса full-table scan. В нашем кейсе будут профулсканены 100% таблиц и 100% строк во всех таблицах. Долго. Нудно. Возможно придется подождать пару часиков. Но разве клиента который хочет найти бла-бла это скребёт. Он говорит - хочу бла-бла. Ждать сколько? Да хоть неделю. Найдите мне бла-бла... Что за этим скрыто? Номер счета. Физ-лицо. Сумма платежа. Пох. 2) Ничего мы не городим. У нас на вход приходит: - java.sql.Connection - "blah-blah" Я считаю что этих сведений достаточно чтобы найти like a google Поскипаем скорость. Просто говорим о принципиальной возможности. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 10:49 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
Garrickmayton...Но давайте уберем за скобки конкретную БД. ... Если в таком ключе, то для IBM Lotus Notes, например, это вполне повседневная обычная задача не вызывающая никаких трудностей. Для CouchDb Давайте сверх-задачу. Мы не знаем сведений о СУБД. Но я верю что информации которую поставляет нам DbmsMetadata достаточно чтобы решить задачу в том ракурсе в котором я нарисовал интерфейс. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 10:51 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
DbmsMetadata DatabaseMetadata ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 10:54 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
Жаль. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 11:08 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
Korcarв общем 4 запроса сделал. надеюсь годно получилось?????? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 11:11 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
maytonPetro123mayton, Может я не понял идею, но выше увидел только декларацию интерфейса. Намерения. Реализацию не увидел. Совершенно верно. Я обсуждаю пока только идею на уровне фасада. Или того угла зрения под которым на это будут смотреть. Вам нравится идея? Да конечно, для фасада идея здравая и разумная. Только цели ТС просто поговорить или трёп со смыслом были видны с первым постом). Удачи! ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 11:30 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
maytonДавайте сверх-задачу. Мы не знаем сведений о СУБД.это будет сразу не оптимально. mayton1) Like создает нагрузку класса full-table scan.ну фулскан для like не имеет смысла, потому как поиск по like подразумевает не полную информацию о искомом, как правило отдельные части содержимого и порядок вхождения этих частей не известен поэтому сканировать полностью таблицу нет смысла - вернёт много чего лишнего следовательно надо ограничиться в приемлемое число возвращаемых записей - супермаксимум 20, реально 5 достаточно если в найденном нет искомого - добавляем дополнительный like . запускаем поиск - как правило находим уже с помощью глаз :) практически - в 28000записях - достаточно 2 like в 3лямах 3-4 нагрузка на субд практически нулевая- если у вас база в 3ляма записей для оперативной работы, значит и железо будете для этого использовать нормальное, и память не пожалеете. в моём примере 2.9лямов - 660мег на диске, выделяем 5гиг памяти - и поиск like происходит в памяти, без обращения к диску. по скорости - при 28000 записях - на слабом железе и малой памяти - отображение при вводе каждого символа происходит практически мгновенно . при 2.9млн - 3like -1.6 сек/ 1like-0.3сек(хорошее железо)нагрузка на проц на заметна по диспетчеру задач... ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 11:33 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
вадяKorcarв общем 4 запроса сделал. надеюсь годно получилось?????? у меня запроса всего 4, а вопросов у тебя аж 6! чего спрашиваешь то? тебе наверное надо умерить аппетиты) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 11:48 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
Korcarу меня запроса всего 4, а вопросов у тебя аж 6! чего спрашиваешь то? тебе наверное надо умерить аппетиты)у меня 1 запрос как ты насчитал 6? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 11:52 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
вадяmaytonДавайте сверх-задачу. Мы не знаем сведений о СУБД.это будет сразу не оптимально. Так что. Откажешся кодить? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 11:58 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
maytonТак что. Откажешся кодить?сделаю оптимально. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 12:07 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
вадяпоэтому сканировать полностью таблицу нет смысла - вернёт много чего лишнего следовательно надо ограничиться в приемлемое число возвращаемых записей - супермаксимум 20, реально 5 достаточно Почему 20? Почему 5? Если клиент захочет все? если в найденном нет искомого - добавляем дополнительный like . Зачем? Допустим есть табличка T1, с полями F1,F2,F3...... Я сразу пишу Код: plsql 1. 2. 3. 4. 5.
И решаю задачу целиком. Если оптимизатор выбрал full table scan то ему уже пофиг сколько OR LIKE предикатов будет стоять 1 и сотня. Тем более что по булевой логике первый сработавший предикат прерывает цепочку сравнений. запускаем поиск - как правило находим уже с помощью глаз :) Никаких глаз. Глаза врут. К чорту глаза. практически - в 28000записях - достаточно 2 like в 3лямах 3-4 Вообще не понял эту бухгалтерию. Почему 2? Почеу 3 ляма? при 2.9млн - 3like -1.6 сек/ 1like-0.3сек(хорошее железо)нагрузка на проц на заметна по диспетчеру задач... (морщится) При чем здесь это? Что это за метрики? Давайте пока не будем это учитывать. Бесполезная инфа и к моему предлагаемому интерфейсу не несет никакой пользы. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 12:10 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
вадяmaytonТак что. Откажешся кодить?сделаю оптимально. Сделай. Интерфейс видел? Кодь. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 12:10 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
вадяну фулскан для like не имеет смысла по-моему кто-то кого-то не так понял. когда ты пишешь запрос вида like - бд может быть вынуждена просканировать все записи - это называется full scan ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 12:17 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
chpashaвадяну фулскан для like не имеет смысла по-моему кто-то кого-то не так понял. когда ты пишешь запрос вида like - бд может быть вынуждена просканировать все записи - это называется full scan Зачем веселье портишь? Я ждал следующих перлов ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 12:20 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
maytonПочему 20? Почему 5? Если клиент захочет все?потому что такой поиск оптимален когда вывод происходит по мере ввода если данныз не много ~30000, можно начинать поиск с 1 введённого(теоретически - глупо, но проще код, меньше проверок) и соответственно при 1 введённом символе выведет почти всё при 2 символах чуть меньше. соответственно первоначально есть смысл ограничить набор найденного, при наборе 2групп символов (если чел знает что ищет) набор найденного уже 5-10 позиций это при исходных данных в 30000. это из практических наблюдений. Код: sql 1. 2. 3. 4.
тут ты получишь ахинею Код: sql 1. 2. 3. 4.
так ты получишь искомое maytonНикаких глаз. Глаза врут. К чорту глаза. в 5-10 строчках глаз не соврёт - проверено практикой [quote mayton]Вообще не понял эту бухгалтерию. Почему 2? Почеу 3 ляма? [quote ]оговорка по Фрейду реально проверено на таблице в 2 950 000 , поэтому и 2-3 ляма maytonПри чем здесь это? Что это за метрики? Давайте пока не будем это учитывать. Бесполезная инфа и к моему предлагаемому интерфейсу не несет никакой пользы.это инфа к сведению что б было что сравнивать по скорости ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 12:30 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
chpashaпо-моему кто-то кого-то не так понял. когда ты пишешь запрос вида like - бд может быть вынуждена просканировать все записи - это называется full scan если ты ввёл 2 символа и вываливаешь всё что нашёл этот like- этот объём никому не нужен. поэтому и не смысла делать фулскан, есть смысл остановить его при нахождении 5-10 записей и добавить что выбрано очень много -добавьте критерии для фильтра. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 12:36 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
maytonСделай. Интерфейс видел? Кодь.у меня сделано для веб без всяких интерфейсов :) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 12:40 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
вадятут ты получишь ахинею Код: sql 1. 2. 3. 4.
так ты получишь искомое Ты понимаешь что такое поиск like a Google? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 12:42 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
вадяmaytonСделай. Интерфейс видел? Кодь.у меня сделано для веб без всяких интерфейсов :) Покеж. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 12:42 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
maytonТы понимаешь что такое поиск like a Google? а ты что хочешь найти? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 12:47 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
вадяпоэтому и не смысла делать фулскан, есть смысл остановить его Это как? Слезно попросить ДБ? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 12:51 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
maytonПокеж.дай набор данных сделаю демку. или могу выложть кусок кода который обрабатывает на сервере строку типа ыва ннн вааыв преобразует её для динамического запроса в хранимке и по ответу строит таблицу для выподающего списка ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 12:51 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
забыл никЭто как? Слезно попросить ДБ?не помню как в mssql, но в mysql есть Limit n ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 12:52 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
вадяmaytonТы понимаешь что такое поиск like a Google? а ты что хочешь найти? Это неважно Твой второй запрос не будет работать. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 12:55 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
maytonТы понимаешь что такое поиск like a Google?для того чтоб найти что-то в одном поле надо так Код: sql 1. 2. 3. 4.
что б в нескольких полях Код: sql 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 12:58 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
maytonТвой второй запрос не будет работать.твой найдёт кучу лишнего ищут то где есть и первый параметр и второй и третий И , а не ИЛИ ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 13:00 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
вадяmaytonТы понимаешь что такое поиск like a Google?для того чтоб найти что-то в одном поле надо так Код: sql 1. 2. 3. 4.
Это треш какой-то. Ты даже не представляешь как мне легко опровергать твои тезисы. Нет честное слово. У тебя было it-образование? Ну ОК. Ладно. Допустим ты - бывший оператор ПК. Во первых по заданию метод lookup(String text) имеет один аргумент. Это понятно? Тоесть text="%blah-blah%". И других выражений не будет. Вроде это было очевидно из моего примера. В таблице могут быть не-текстовые поля. Числовые. Тоесть если я ищу СТРОКОВЫЙ символ через LIKE в числовом поле. То это всегда FALSE. Тождественный FALSE. Инвариант. И если F1 - числовое поле (что не запрещено по моему первому тезису) то твой запрос всегда будет возвращать 0 строк потому что пересечение FALSE и других предикатов даст тождественный FALSE. Мне не надо искать примеры с данными. Ферштейн? А гугло-поиск - это найти что-то везде. Во всех документах и всех полях искомой системы где мы ищем. Метафора такая. Ну как в текстовом файле. Ферштейн? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 13:05 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
вадяmaytonТвой второй запрос не будет работать.твой найдёт кучу лишнего ищут то где есть и первый параметр и второй и третий И , а не ИЛИ Уже ответил выше. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 13:06 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
вадяmaytonПокеж.дай набор данных сделаю демку. или могу выложть кусок кода который обрабатывает на сервере строку типа ыва ннн вааыв преобразует её для динамического запроса в хранимке и по ответу строит таблицу для выподающего списка Ну Окей. Возьми базу данных NorthWind. Она часто публикуется в тексте. И найди в ней "123". Но конечно хотелось-бы какое-то общее решение. Не для 1 таблички а для всех. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 13:08 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
maytonВ таблице могут быть не-текстовые поля. Числовые. Тоесть если я ищу СТРОКОВЫЙ символ через LIKE в числовом поле. То это всегда FALSE. Тождественный FALSE. Инвариант.как только дошёл до этого - понял, что с базами ты знаком очень отдалённо....... на примере mysql есть таблица Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
обрати внимание на поле UPCEAN bigint(20) DEFAULT NULL, делаю запрос Код: sql 1. 2. 3. 4.
возвращает "UPCEAN"121042104381210426216122000121042760012104273012104210444921121042006427031210427590512104247826312104221111211210429312104280009431210428001003121042800483312104280049031210428006433274871210425400832121042546060081210424820008121042482011121042854490001210426909756121042 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 13:27 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
вадяесли ты ввёл 2 символа и вываливаешь всё что нашёл этот like- этот объём никому не нужен. поэтому и не смысла делать фулскан блин вадя, соберись ;) . тебе известно понятие плана запроса? если ты ищешь по полю, на который не существует индекса, то бд будет делать полный перебор записей, что очень неэффективно, если записей много. в данном случае кол-во символов вообще побоку, а limit ничего радикально не решает, потому как нет никаких гарантий, что в очереди из миллиона строк твои 2 нужные не находятся в самом конце списка или где-то посередине с промежутком в 300-400к. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 13:34 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
такой запрос Код: sql 1. 2. 3. 4. 5. 6.
вернёт "UPCEAN""Name"6909756121042"Фломастеры gmv 12шт gw258-12g" ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 13:36 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
chpashaблин вадя, соберись ;) . тебе известно понятие плана запроса? если ты ищешь по полю, на который не существует индекса, то бд будет делать полный перебор записей, что очень неэффективно, если записей много. в данном случае кол-во символов вообще побоку, а limit ничего радикально не решает, потому как нет никаких гарантий, что в очереди из миллиона строк твои 2 нужные не находятся в самом конце списка или где-то посередине с промежутком в 300-400к. что бы не быть голословным , сделал такой запрос Код: sql 1. 2. 3. 4. 5.
такого в поле однозначно нет да делает фуллл, но время 1.16сек для сравнения времени можете почитать 21670315 если ты сможешь предложить более оптимальны поиск - я применю ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 13:43 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
вадя, Ты вообще не читаешь то что я пишу. Я решаю задачу в рамках 1 интерфейса который я предложил. Ты решаешь другую задачу где есть 2 ключевых слова для поиска. Это не моя постановка. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 13:48 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
chpasha, да план запроса - сканирует все строки, но реально , при limit 5 будет намного меньше и время от 0 до 1.1сек. если ты сделаешь аналогичное на java - будет на много дольше. тут был недавно топик, где измеряли скорость - так вот .equals на порядок тормознее чем посимвольное сравнение ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 13:50 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
вадяда делает фуллл, но время 1.16сек ну вот, уже сек. что не так уж и мало. умножь кол-во записей на 100, поставь сервер послабее, уменьши памяти и увеличь кол-во пользователей и уже могут начаться жуткие тормоза вадяесли ты сможешь предложить более оптимальны поиск я где-то уже выше писал, что по-моему нужно ориентироваться на конкретную задачу при выборе решения. Ну например в postgres (и наверняка много где еще) можно создавать индексы, которыми может воспользоваться движок при поиске по like. Если записей и пользователей совсем жуткое кол-во, а требования по эффективности достаточно строги - могут и сторонние решения понадобится для индексации данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 13:56 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
maytonТы вообще не читаешь то что я пишу. Я решаю задачу в рамках 1 интерфейса который я предложил. Ты решаешь другую задачу где есть 2 ключевых слова для поиска.1 ключевое поле для поиска - это бесполезно. к примеру есть контора, торгующая моющими средствами - там есть разные мылЫ одного хозяйственного дофига , если использовать для поиска ключевое слово хоз вывалится вес огромный список мыл + ещё куча того что относится к хозяйству... но достаточно ввести (к примеру ) вес куска 200 - будет список очень маленький - 1-3 строки ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 13:56 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
chpashaну вот, уже сек. что не так уж и мало. умножь кол-во записей на 100, поставь сервер послабее, уменьши памяти и увеличь кол-во пользователей и уже могут начаться жуткие тормозаэтот метод реально работал с 98 года - на том железе сколько может быть наименований у торгующей конторы? 100 000 ? 200 000? ежели 3 000 000 - то она спокойно может вложиться в хорошее железо. да надо ориентироваться на конкретную задачу - я здесь привожу цифры чтоб можно было ориентироваться хоть на что-то у меня была база в 28 000 наименований товара - и обычное железо - оценить быстродействие было практически не возможно - величины чисел терялись , практически(повторяюсь) данные вывыливались мгновенно, это с учетом того , что был полный цикл от ввода пользователем в браузере - сервер - субд - браузер... ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 14:06 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
вадяKorcarу меня запроса всего 4, а вопросов у тебя аж 6! чего спрашиваешь то? тебе наверное надо умерить аппетиты)у меня 1 запрос как ты насчитал 6? вадяKorcarв общем 4 запроса сделал. надеюсь годно получилось?????? сколько ты знаков вопроса поставил? варианты: 4, 6, другое ты еще и не читатель ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 14:10 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
Korcarты еще и не читательу меня все в 1 запросе, ты у меня насчитал 6 запросов, как ты считаешь? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 14:15 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
вадяты у меня насчитал 6 запросов, как ты считаешь? он намекает, что в твоем сообщении шесть знаков "?" ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 14:17 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
вадязабыл никЭто как? Слезно попросить ДБ?не помню как в mssql, но в mysql есть Limit n top n в select ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 14:24 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
Лимит курсора есть почти во всех dbms. Но в данной задаче это ненужное 5 колесо. Оставьте его в покое. Подумайте почему в интерфейсе я заложил не List а Iterator в качестве типа возвращаемого значения. И как это закодить в рамках множества таблиц. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 14:30 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
вадяKorcarты еще и не читательу меня все в 1 запросе, ты у меня насчитал 6 запросов, как ты считаешь? 6 ВО просов. раскрой глаза ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 14:34 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
maytonПодумайте почему в интерфейсе я заложил не List а Iterator в качестве типа возвращаемого значения.лист или итератор - это будет не быстрее чем это сделать в субд. если есть права - можно получить все данные о субд и по ним построить запрос по поиску нужных данных записывать в лист или итератор скачанное из субд это не разумно, потому как память требуемую для лист/итератор лусше отдать субд она более правильно будет использовать. maytonНо в данной задаче это ненужное 5 колесо.как раз в этой задаче и есть в этом ускорение, ограничение на вывод не нужной инфы ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 14:41 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
Korcarу меня запроса всего 4, а вопросов у тебя аж 6!да не доглядел, но чем ты похвастался? что 4 запроса вместо 1? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 14:43 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
вадяmaytonНо в данной задаче это ненужное 5 колесо.как раз в этой задаче и есть в этом ускорение, ограничение на вывод не нужной инфы Если-б ты был DBA как я, то ты сразу-бы понял что задачи полного поиска по like не индексируются никак и (почти!) никак не ускоряются. Можешь мне поверить я собаку скушал на этом. Мы на elastic переходили чтобы поднять перформанс некоторых вещей. Если текст курсора содержит выражение вида WHERE ... LIKE '%....%' и других предикатов нет - то данный план всегда будет содержать FTS. Исключение составляют - специфичные LIKE выражения где нет метасимвола с фронта (например LIKE 'бла%'). В этом случае индекс на основе Б+Дерева может быть использован. Во всех остальных кейсах - нет. - проприетарные технологии в Oracle (OracleText (CTX_CAT...)) при условии что в таблице 1 единственное поле и оно стоит под этим доменным индексом. - проприетарные технологии PostgreSQL, MySQL, MS-SQL которые поддерживают индексы текстового поиска. Беря во внимание мой Java-интерфейс и мою постановку вероятность этих специфичных кейсов практически равна нулю. И затачивать под них генерализованный Jdbc поиск я не хочу. Беря во внимание что никто не хочет искать выражение 'бла%' а все хотят искать выражение в любой части документа данная LIKE оптимизация нам не поможет. Сюда-же до кучи функциональные индексы. Ускорить FTS под Oracle можно для крупных partitioned таблиц при использовании hint +PARALLEL(n) в n процессов по аналогии c фьючерсами в java. Для этого почти ничего не надо делать только детектировать тип DBMS (через DatabaseMetadata) и активировать хинт. Опять-же для данной задачи КМК важнее чтобы она работала концептуально правильно а уже всякие тюнинги можно сделать потом как плагины изменяющие оригинальный текст запроса. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 15:17 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
вадяmaytonПодумайте почему в интерфейсе я заложил не List а Iterator в качестве типа возвращаемого значения.лист или итератор - это будет не быстрее чем это сделать в субд. если есть права - можно получить все данные о субд и по ним построить запрос по поиску нужных данных записывать в лист или итератор скачанное из субд это не разумно, потому как память требуемую для лист/итератор лусше отдать субд она более правильно будет использовать. Ну всё таки. Ты ПОНИМАЕШЬ зачем вообще в Java есть интерфейс Iterator? В чем его назначение? Зачем вообще он выделен в отдельную сущность? Почему иерархия коллекций не завершилась на уровне List? Почему я настаиваю именно на Iterator а не сделал просто List? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 15:23 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
maytonЕсли-б ты был DBA как я, то ты сразу-бы понял что задачи полного поиска по like не индексируютсяя и не заявлял про индексы. я знаю что like очень медленный поиск, но если сравнивать mysql 5.7 с версиями до 5.7 - можно увидеть десятикратную разницу . я не знаю чем они этого добились, но факт остаётся фактом. и эта 1.6 сек для поиска в 3лямах я считаю вполне приемлемым . всё конечно зависит от задачи. я не могу понять что ты хочешь добиться применив свой вариант интерфейса, но я вижу что применение его будет тормозить систему. поиск в числовых полях по like - это несколько странная задача. числовые поля как правило индексируются и поиск быстрый. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 15:35 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
вадяmaytonЕсли-б ты был DBA как я, то ты сразу-бы понял что задачи полного поиска по like не индексируютсяя и не заявлял про индексы. я знаю что like очень медленный поиск, но если сравнивать mysql 5.7 с версиями до 5.7 - можно увидеть десятикратную разницу . я не знаю чем они этого добились, но факт остаётся фактом. и эта 1.6 сек для поиска в 3лямах я считаю вполне приемлемым . всё конечно зависит от задачи. я не могу понять что ты хочешь добиться применив свой вариант интерфейса, но я вижу что применение его будет тормозить систему. поиск в числовых полях по like - это несколько странная задача. числовые поля как правило индексируются и поиск быстрый. Человек который ищет информацию - обычно не различает числа-строки-даты. Он ищет проивольный текст. Номер счета в банке в формате хххх-хххх-хххх.... Налоговый номер который не всегда число. Номер телефона который в принципе никогда (повертье мне) не был числом. SysGUID транзакции в терминале. Название юр-лица которое вызывает интерес. И любая другая инфа которая интересна вам если вы - частный детектив. Сотрудник налоговой. Спецслужб. Или просто любопытный кул-хацкер. Неважно. А важно то что текстовый поиск имеет другую (не-реляционную) природу. И в данном моём хакатоне я предложил его реализовать если кто осилит. Впрочем я думаю что я перефразирую тему и форкну ее отдельным топиком. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 15:56 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
mayton, Итератор служит чисто для перебора по кортежу. Т.е. этап формирования и фильтров уже пройден. Или у тебя итератор по полям тоже? Т.е. это пол задачи. Вадя говорит о первой части, а итератор это потом синтаксический сахар подкачки записей как в гугле. А для вади любой ООП это прокладки. Бесполезен спор. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 16:29 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
maytonЧеловек который ищет информацию - обычно не различает числа-строки-даты. Он ищет проивольный текст. Номер счета в банке в формате хххх-хххх-хххх.... Налоговый номер который не всегда число. Номер телефона который в принципе никогда (повертье мне) не был числом. SysGUID транзакции в терминале. Название юр-лица которое вызывает интерес. И любая другая инфа которая интересна вам если вы - частный детектив. Сотрудник налоговой. Спецслужб. Или просто любопытный кул-хацкер. Неважно.я уже показал что происходит при поиске с помощью like в числовом поле - оно преобразуется в текстовое если мне надо найти в нескольких полях некоторые из которых числовые , я воспользуюсь (буду говорить о mysql т.к. последнее время только с ней и работаю) оператором concat_ws(' ' , поле1, поле2...) любое числовое поле попав в этот оператор превращается в строку. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 16:32 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
Petro123Итератор служит чисто для перебора по кортежу. Т.е. этап формирования и фильтров уже пройден. вот тут вообще непонятки если уже отбор в базе пройден зачем в итератор? чтоб потом из итератора фильтровать? или сделать пагинацию? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 16:37 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
Petro123Итератор служит чисто для перебора по кортежу, т.е. этап формирования и фильтров уже пройден а мне кажется задумка в том, что благодаря итератору мы можем в любой момент остановиться, когда решим, что уже нашли достаточно. так что не факт, что формирование уже окончено и уж тем более фильтрация. ну если мы реально собрались шерстить всю базу, то имеет смысл это делать только в момент вызова hasNext ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 16:43 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
я кажется понял фразу "как в гугле" :) тогда у нас есть общее и различное в подходе к поиску я в базе ищу 1 запись. когда мне вываливается список из 10 записей - я ищу в нем "глазами" в терминологии mayton - гугл вывалил набор , он в нем выбрал фразу и гугл предложил кучу страниц для поиска "глазами" ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 16:45 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
chpashaа мне кажется задумка в том, что благодаря итератору мы можем в любой момент остановиться, когда решим, что уже нашли достаточно. так что не факт, что формирование уже окончено и уж тем более фильтрация. ну если мы реально собрались шерстить всю базу, то имеет смысл это делать только в момент вызова hasNextно тогда мы должны из базы загрузить всё в итератор. и шагать по нему используя тот же like при каждом шаге. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 16:48 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
вадяmaytonЧеловек который ищет информацию - обычно не различает числа-строки-даты. Он ищет проивольный текст. Номер счета в банке в формате хххх-хххх-хххх.... Налоговый номер который не всегда число. Номер телефона который в принципе никогда (повертье мне) не был числом. SysGUID транзакции в терминале. Название юр-лица которое вызывает интерес. И любая другая инфа которая интересна вам если вы - частный детектив. Сотрудник налоговой. Спецслужб. Или просто любопытный кул-хацкер. Неважно.я уже показал что происходит при поиске с помощью like в числовом поле - оно преобразуется в текстовое если мне надо найти в нескольких полях некоторые из которых числовые , я воспользуюсь (буду говорить о mysql т.к. последнее время только с ней и работаю) оператором concat_ws(' ' , поле1, поле2...) любое числовое поле попав в этот оператор превращается в строку. Конкатенация - тяжелая операция. На некоторых DBMS сущетсвует ограничение на длину строки. Велик шанс поймать ошибку SQL-машины. Концептуально - я не против но нужен тестинг и еще раз тестинг. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 16:50 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
то что ищет гугл называется "полнекстовой поиск" гугл вывалил несколько фраз и ищет вхождение слов/словоформ из этих фраз и предлагает кучу страниц для поиска глазами в моём применение найти четко одну запись, а для поиска глазами предоставить максимум 10 строк ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 16:54 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
вадяно тогда мы должны из базы загрузить всё в итератор вовсе нет. у нас в итераторе есть внутренее состояние в виде плагинов, которые каким-то образом осуществляют поиск и ведут учет уже посещенных таблиц, полей и записей. соответственно только при вызове hasNext мы стартуем сканирование, при нахождении следующей записи (или блока записей) останавливаемся и возвращаем true, при вызове next() саму запись. При следующем вызове если у нас есть записи в кэше, возращаем их, иначе лезем в БД. Т.е. это что-то типа ленивого поиска з.ы. Это мое предположение, я не знаю, что там mayton задумал - он известный затейник ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 16:54 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
Вы щас полнотекстовый поиск изобретаете) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 16:59 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
maytonКонкатенация - тяжелая операция. На некоторых DBMS сущетсвует ограничение на длину строки. Велик шанс поймать ошибку SQL-машины. Концептуально - я не против но нужен тестинг и еще раз тестинг.да особенно в java в субд есть вариант при добавлении записи иметь поле в котором будут записана строка соединённая из всех полей в которых возможен поиск. в mysql появилась возможность виртуализации полей Код: sql 1.
и надо сказать стоимость такой операции ниже плинтуса и в 21670315 как раз и тестируется ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 17:03 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
chpashaвовсе нет. у нас в итераторе есть внутренее состояние в виде плагинов, которые каким-то образом осуществляют поиск и ведут учет уже посещенных таблиц, полей и записей. соответственно только при вызове hasNext мы стартуем сканирование, при нахождении следующей записи (или блока записей) останавливаемся и возвращаем true, при вызове next() саму запись. При следующем вызове если у нас есть записи в кэше, возращаем их, иначе лезем в БД. Т.е. это что-то типа ленивого поискакак бы это ни крутилось оно работает через jdbc и в конечном итога загружает все данные из базы в java и дублирует работу субд ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 17:05 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
mayton, В твоем топике перебор табл на основе инфы из базы? Там вроде api разное для ДайИменаТаблиц. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 17:05 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
вадято что ищет гугл называется "полнекстовой поиск" гугл вывалил несколько фраз и ищет вхождение слов/словоформ из этих фраз и предлагает кучу страниц для поиска глазами в моём применение найти четко одну запись, а для поиска глазами предоставить максимум 10 строк Гугл работает сложнее. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 17:06 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
maytonГугл работает сложнее.само собой, но в первом приближении где-то так ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 17:07 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
вадякак бы это ни крутилось оно работает через jdbc и в конечном итога загружает все данные из базы в java и дублирует работу субд Нет. Итератор For i table.count() ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 17:08 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
maytonГугл работает сложнее.но и он конечный выбор предлагает делать "глазами" ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 17:08 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
Как и обещал. Форкнул здесь 21673897 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 17:09 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
Petro123mayton, В твоем топике перебор табл на основе инфы из базы? Там вроде api разное для ДайИменаТаблиц. Т.е. это будет БДзависимо. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 17:09 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
Petro123Нет. Итератор For i table.count()что нет? чтоб что-то найти в данных надо их иметь, либо загрузить все сразу ,либо подгружать по мере надобности а подгружать/загружать откуда ? из базы. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 17:10 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
вадяmaytonГугл работает сложнее.но и он конечный выбор предлагает делать "глазами" Все на чем ты сейчас настаиваешь называется 1 словом pagination. И я упаси меня господь вовсе не против этого замечательного процесса. Давай уже поскипаем. Но беря во внимание что мы ищем не в 1 таблице а в сете таблиц я тебе предлагаю подумать каким образом и что ты там будешь лимитировать по TOP N (like MySQL) или ROWNUM < N (Like Oracle) и расскажи как ты себе это представляешь для execution plan. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 17:11 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
вадязагружает все данные из базы не обязательно. вернее практически никогда - это же зависит от клиента, т.е. если ты не написал while.hasNext, то и не загрузит вадяи дублирует работу субд тоже нет. опять же таки, если я понял, mayton предложил что-то типа универсального интерфейса для поиска в бд. я так понял, что не предлагается грузить записи и искать в них средствами java (тогда это было бы дублированием). вернее можно и такую реализацию сделать, но можно и реализации, которая точно так же генерит запросы к бд, тогда дублирования нет ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 17:12 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
Petro123Т.е. это будет БДзависимо.не спорю. ту выбор - либо ловить блох на тонкостях каждой субд, ибо универсальнос к субд и забыть о быстродействии ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 17:12 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
Petro123Petro123mayton, В твоем топике перебор табл на основе инфы из базы? Там вроде api разное для ДайИменаТаблиц. Т.е. это будет БДзависимо. Моя интуиция подсказывает мне что Java Database Connectivity все таки спасет нас. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 17:12 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
chpashaтоже нет. опять же таки, если я понял, mayton предложил что-то типа универсального интерфейса для поиска в бд. я так понял, что не предлагается грузить записи и искать в них средствами java (тогда это было бы дублированием). вернее можно и такую реализацию сделать, но можно и реализации, которая точно так же генерит запросы к бд, тогда дублирования нетвот я и склоняюсь ко второму варианту генерится запрос(не важно каким образом) и получается результат , который в читабельном виде отправляется клиенту ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 17:14 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
вадяв mysql появилась возможность виртуализации полей Код: sql 1.
Нет. Мы не будем изменять объекты БД лишь только для того чтобы получить поиск. Обойдемся возможностями Java. В идеале нам дадут доступ R/O. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 17:16 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
maytonНет. Мы не будем изменять объекты БД лишь только для того чтобы получить поиск. Обойдемся возможностями Java. В идеале нам дадут доступ R/O.вот это и есть ограничения. тогда надо добавить условие базонезависимость. и при этих ограничениях и откажусь от участия. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 17:19 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
вадяmaytonНет. Мы не будем изменять объекты БД лишь только для того чтобы получить поиск. Обойдемся возможностями Java. В идеале нам дадут доступ R/O.вот это и есть ограничения. тогда надо добавить условие базонезависимость. и при этих ограничениях и откажусь от участия. Раскрой мне термин - базонезависимость. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 17:24 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
chpashaPetro123Итератор служит чисто для перебора по кортежу, т.е. этап формирования и фильтров уже пройден а мне кажется задумка в том, что благодаря итератору мы можем в любой момент остановиться, когда решим, что уже нашли достаточно. так что не факт, что формирование уже окончено и уж тем более фильтрация. ну если мы реально собрались шерстить всю базу, то имеет смысл это делать только в момент вызова hasNext Именно. Более того. Итератор может быть внутри сложным. Он может сцеплять несколько курсоров. Он может быть мультипоточным и дофетчивать данные пока пользователь смотрит первую страницу. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 17:27 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
maytonРаскрой мне термин - базонезависимость.кроссбраузерность , кроссбазовость ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 18:30 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
вадяmaytonРаскрой мне термин - базонезависимость.кроссбраузерность , кроссбазовость При чем здесь браузерность? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 18:36 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
maytonПри чем здесь браузерность?просто как синоним ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 18:39 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
maytonПри чем здесь браузерность?кроссбазовость - я такого не слышал, вот чтоб было понятно откуда ноги растут...:) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 18:40 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
Этого достаточно http://www.oracle.com/technetwork/java/javase/jdbc/index.html The Java Database Connectivity (JDBC) API is the industry standard for database-independent connectivity between the Java programming language and a wide range of databases SQL databases and other tabular data sources, such as spreadsheets or flat files. The JDBC API provides a call-level API for SQL-based database access. JDBC technology allows you to use the Java programming language to exploit "Write Once, Run Anywhere" capabilities for applications that require access to enterprise data. With a JDBC technology-enabled driver, you can connect all corporate data even in a heterogeneous environment. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 18:43 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
maytonЭтого достаточноно это не исключает возможность написать запрос ручками с учётом особенности конкретной субд ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 19:16 |
|
JDBC необязательные параметры
|
|||
---|---|---|---|
#18+
вадяmaytonЭтого достаточноно это не исключает возможность написать запрос ручками с учётом особенности конкретной субд Не исключает. Чисто технически я допускаю что будут исключения. Редкие типы данных которые не смапились корректно на java.sql.* но думаю что это в целом не помешает для 1-2 случаев забить хардкод типа если там dbms=xyz то смапить какой-нить тип abc на cde. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 19:21 |
|
|
start [/forum/topic.php?all=1&fid=59&tid=2121789]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
60ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
144ms |
get tp. blocked users: |
1ms |
others: | 312ms |
total: | 560ms |
0 / 0 |