Форум программистов, компьютерный форум, киберфорум
Java: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/18: Рейтинг темы: голосов - 18, средняя оценка - 4.72
4 / 4 / 2
Регистрация: 14.07.2009
Сообщений: 39

Сложность SQL запроса и Java

27.07.2009, 17:49. Показов 3286. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Один и тот же код - меняю только вставляемый запрос. в первом случаи 13 тысяч строк выводятся за 20 секунд, а запрос, формирующий 8 строк не обрабатывается и за 8 минут с чем это может быть связано? Как желательно переписывать запросы, что бы работало быстрее? Вот код:

первый:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.table.*;
import java.sql.*;
import java.applet.Applet;
 
public class CartonResearchDev extends JFrame{
 
     //Define the application contents
     Container contentPane;
     JTextField txtDate1;
     JTextField txtDate2;
     JLabel lblDate1;
     JLabel lblDate2;
     JButton btn1;
     JTable table;
     ResultSet rs;
     
     public void ExecuteSQL(){
     
 
     }          
 
     public CartonResearchDev(String args[]) throws SQLException{
 
          //Main title of application
          super("Carton Research");
          //Create the contents of the app
          this.setResizable(false);
          this.setDefaultCloseOperation(EXIT_ON_CLOSE);
          contentPane = getContentPane();
          contentPane.setLayout(new FlowLayout());
          lblDate1 = new JLabel("Enter First Date:");
          lblDate2= new JLabel("Enter Second Date:");
          txtDate1 = new JTextField(10);
          txtDate2 = new JTextField(10);
          contentPane.add(lblDate1);
          contentPane.add(txtDate1);
          contentPane.add(lblDate2);
          contentPane.add(txtDate2);
          btn1 = new JButton("Click Me To Run Query");
          //btn1.setMnemonic(KeyEvent.VK_C);
          btn1.addActionListener(new ActionListener(){
               public void actionPerformed (ActionEvent ae){}
          });
 
          contentPane.add(btn1);
 
        try {                    
            Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); 
        } catch (ClassNotFoundException ex) {
            ex.printStackTrace();
        }
 
        String connectionUrl = "jdbc:sqlserver://localhost:4623;" +
            "databaseName=kherson;user=testing;password=J5O6QF0A;";
        Connection con = DriverManager.getConnection(connectionUrl);
        Statement stmt = con.createStatement();
 
               //query to be run against pkms
        ResultSet rs = stmt.executeQuery("SELECT * FROM ds_orders");              
    
        while (rs.next()) { 
            String str = rs.getString(1)+ "  " + rs.getString(2) + "  " + rs.getString(3);
            System.out.println(str);
        }
               //Create table for query results to be displayed
         //JTable table = new JTable(rs);
       //  table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
        // JScrollPane resultsPane = new JScrollPane(table);
       //  contentPane.add(resultsPane, BorderLayout.CENTER); 
         rs.close();
         stmt.close();
         con.close();
         pack();
         setVisible(true);        
     }
 
     public static void main(String args[]) throws SQLException{
          //Create the Application window
          CartonResearchDev cr = new CartonResearchDev(args);
          cr.setSize(500, 500);
          cr.setVisible(true);
 
     }
 
}
и второй, тормознутый:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.table.*;
import java.sql.*;
import java.applet.Applet;
 
public class Slomat extends JFrame{
 
     //Define the application contents
     Container contentPane;
     JTextField txtDate1;
     JTextField txtDate2;
     JLabel lblDate1;
     JLabel lblDate2;
     JButton btn1;
     JTable table;
     ResultSet rs;
     
     public void ExecuteSQL(){
     
     }          
 
     public Slomat(String args[]) throws SQLException{
 
        try {                    
            Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); 
        } catch (ClassNotFoundException ex) {
            ex.printStackTrace();
        }
 
        String connectionUrl = "jdbc:sqlserver://localhost:4623;" +
            "databaseName=kherson;user=testing;password=J5O6QF0A;";
 
        Connection con = DriverManager.getConnection(connectionUrl);
        Statement s = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
                     ResultSet.CONCUR_READ_ONLY);
 
                       // Запуск запроса. Результат помещается
                       // в объект ResultSet.
     ResultSet rs = s.executeQuery ("select orNumber, orDate, o.masterfID as AgID," +
                                    "f.fName as AgName, " +
                                    "mfID as OutletID,  "+
                                    "f1.fName as OutletName,"+ 
                                    "i.iName as CatName, "+
                                    "a.attrname as KRAName, "+  
                                    "ooa.attrtext as Value "+
                                    "from ds_orders as o, "+
                                    "ds_orders_objects_attributes as ooa, "+
                                    "ds_faces as f, "+
                                    "ds_faces as f1, "+
                                    "ds_items as i, "+
                                    "ds_attributes as a "+
                                    "where orType=608 and ooa.attrid between 613 and 621 "+
                                    "and (o.orid = ooa.orid "+
                                    "and o.distid = ooa.distid) "+
                                    "and o.masterfID = f.fid "+
                                    "--and o.mfID = f.fid "+
                                   " and o.mfID = f1.fid "+
                                    "and ooa.id = i.iid "+
                                    "and ooa.attrid = a.attrid "+
                                    "and orNumber = 'PS1' "+
                                    "and o.masterfID = 4000021 ");
 
     boolean done = false;
     
             Object[][] dataTable = {
            {"CatLitter", "", "", "", "", "", "", "", "", ""},
            {"Choco", "", "", "", "", "", "", "", "", ""},
            {"FOOD", "", "", "", "", "", "", "", "", ""},
            {"Konfety", "", "", "", "", "", "", "", "", ""},
            {"PetFood", "", "", "", "", "", "", "", "", ""},
            {"Seasonals", "", "", "", "", "", "", "", "", ""},
            {"Sugar", "", "", "", "", "", "", "", "", ""},
            {"Tablets", "", "", "", "", "", "", "", "", ""},
            {"TakeHome", "", "", "", "", "", "", "", "", ""},
            {"ZooSpecialty", "", "", "", "", "", "", "", "", ""},
            {"Всего", "", "", "", "", "", "", "", "", ""},};
      String[] columnNames = {" ", "Дисплей", "POP", "MarsCovPOP", "КПР1", "КПР2", "Лидерство", 
         "РегРесурс", "ТактЗап", "ЦенаПродукта"};
        
     JTable table = new JTable(dataTable, columnNames);
     this.add(table);
     while (rs.next()) { 
            // Get the data from the row using the column index 
            String str = rs.getString(1);
            //System.out.println(str);
            table.setValueAt(str,3,3);            
     }
                       // Закрытие объектов Statement и
                       // отключение.
     s.close();
     con.close();      
     }
 
     public static void main(String args[]) throws SQLException{
          //Create the Application window
          Slomat cr = new Slomat(args);
          cr.setSize(500, 500);
          cr.setVisible(true);
     }
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.07.2009, 17:49
Ответы с готовыми решениями:

Java. Код HTTP запроса
Как получить код у запроса HTTP?

Недопонимание SQL запроса
привет всем есть такой вот запрос public boolean deleteRow() { boolean resp = false; try { ...

Java и упаковка запроса в отдельный файл
Здравтсвуйте! Использую Spring JDBC и DAO классы выглядят примерно вот так: @Repository @Transactional public class...

4
4 / 4 / 2
Регистрация: 14.07.2009
Сообщений: 39
29.07.2009, 15:58  [ТС]
Странное наблюдение: когда переписал запрос в строчку стал работать быстрее
0
 Аватар для 0xAX
2451 / 362 / 9
Регистрация: 27.06.2009
Сообщений: 880
29.07.2009, 17:06
Запрос не пробовали отладить где-нибудь эдак в sql analayzer'e, или еще где? Как там скорость?
0
4 / 4 / 2
Регистрация: 14.07.2009
Сообщений: 39
29.07.2009, 17:32  [ТС]
через mssql быстро проходит, меньше секунды. sqlanalyzer лучше? или он может автоматически модифицировать запрос для увеличения скорости?
0
 Аватар для 0xAX
2451 / 362 / 9
Регистрация: 27.06.2009
Сообщений: 880
29.07.2009, 17:48
Нет sql analayzer служит лишь для отладки запросов. Раз через mssql проходит нормально значит, проблема идет со стороны клиентского кода.

Добавлено через 10 минут 56 секунд
Попробуйте
Java
1
2
Statement s = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
                     ResultSet.CONCUR_READ_ONLY);
Объявить с конструктором Statement без параметров.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.07.2009, 17:48
Помогаю со студенческими работами здесь

Java не выдает результаты запроса к бд из-за слэша
Java не выдает результаты запроса к бд, так как проблема в обратном слэше, но если str поменять просто на число, то тогда запрос...

Java hibernate обработка результата запроса SELECT
Здравствуйте. Скажите пожалуйста - какой способ обработки таблицы, сформированной из нескольких других таблиц путем SQL запроса, является...

Обновление формы во время выполнения SQL запроса
Всем добрый день На главной форме в StatusBar хочу при выполнении SQL запроса устанавливать необходимую иконку. public static...

Перевод java.sql.date -> java.util.date?
Перевод java.sql.date -> java.util.date?

java.net.MalformedURLException: no protocol при попытке послать POST запроса.
пытаюсь послать POST запрос на сервер. Пишет java.net.MalformedURLException: no protocol: Что бы это могло быть? Да вообще, люди. Ну...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru