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

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

27.07.2009, 17:49. Показов 3301. Ответов 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
Ответ Создать тему
Новые блоги и статьи
1С: Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru