一、如何更高效率地插入大量數據

1、INSERT INTO workinfo (column1, column2) VALUES (1, 2), (2, 3),(4,5);,這樣可以減少一些INSERT語句

2、推薦多線程並行插入

 

代碼範例:

PreparedStatement ps = con.prepareStatement(sql);
for(int i = 0; i < 100000; i++) {
    ps.setString(1,"1");
    ps.setString(2,"2");
    ps.addBatch();
}
ps.executeBatch();
//3.使用PreparedStatement + 批處理
public void exec3(Connection conn){
  try {
   conn.setAutoCommit(false);
   Long beginTime = System.currentTimeMillis();
   PreparedStatement pst = conn.prepareStatement("insert into t1(id) values (?)");
  
   for(int i=1;i<=100000;i++){   
    pst.setInt(1, i);
    pst.addBatch();
    if(i%1000==0){//可以設置不同的大小;如50,100,500,1000等等
     pst.executeBatch();
     conn.commit();
     pst.clearBatch();
    }
   }
   Long endTime = System.currentTimeMillis();
   System.out.println("pst+batch:"+(endTime-beginTime)/1000+"秒");
   pst.close();
   conn.close();
  } catch (SQLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
}

 

二、數據庫中索引,視圖的概念

1. 概述

1.1、什麼是視圖

1.視圖是查看數據庫表中數據的一種方法;

2.視圖提供了存儲預定義的查詢語句作為數據庫中的對象以備以後使用的能力;

3.視圖只是一種邏輯對象,並不是物理對象,因為視圖不佔物理存儲空間;

4.在視圖中被查詢的表稱為視圖的基表;

5.視圖的內容包括:基表的列的子集或者行的子集;兩個或者多個基表的聯合;兩個或者多個基表的連接;基表的統計彙總;另外一個視圖的子集;視圖和基表的混合。

 

1.2、視圖的優點

1.集中用户使用的數據;

2.掩碼數據庫的複雜性,視圖把數據庫設計的複雜性與用户屏蔽分開;

3.簡化用户權限的管理;

4.為向其他應用程序輸出而重新組織數據。

 

2、創建視圖

語法

: CREATE VIEW <視圖名> [(列名1,列名2,……)]
       [WITH ENCRYPTION]
       AS
       SELECT_STATEMENT
[WITH CHECK OPTION]
功能:創建視圖
例1:創建一個成績單視圖
CREATE VIEW dbo.vw_cjd(name, cid, result)
     AS
       SELECT name, report.cid, report.result FROM student JOIN report
          ON student.sid=report.sid

例2:顯示成績單視圖

Select * from vw_cjd

例3:創建一個按專業統計平均年齡的視圖

   CREATE VIEW dbo.vw_avg(speciality, avage)

   AS

           SELECT speciality, avg(age) FROM student

                  GROUP BY speciality

例4:顯示平均年齡視圖

Select * from vw_avg

 

3.修改視圖與刪除視圖

3.1修改視圖

語法:ALTER VIEW <視圖名> [(列名1,列名2,……)] [WITH ENCRYPTION]

      AS

SELECT statement [WITH CHECK OPTION]

例:修改視圖vw_cjd

ALTER VIEW vw_cjd

AS

 Select name, report.cid, report.result, address From student join report

    ON student.sid=report.sid

查看Select * from vw_cjd

 

3.2. 刪除視圖

語法:DROP VIEW <視圖名>

例:刪除視圖vw_cjd

    DROP VIEW vw_cjd

三、數據庫中的索引

略。  

四、ajax的同步、異步

舉個例子:普通B/S模式(同步)AJAX技術(異步)
同步:提交請求->等待服務器處理->處理完畢返回 這個期間客户端瀏覽器不能幹任何事
異步: 請求通過事件觸發->服務器處理(這是瀏覽器仍然可以作其他事情)->處理完畢
--------------------------------------------------------------------------------------------------------------------
同步就是你叫我去吃飯,我聽到了就和你去吃飯;如果沒有聽到,你就不停的叫,直到我告訴你聽到了,才一起去吃飯。
異步就是你叫我,然後自己去吃飯,我得到消息後可能立即走,也可能等到下班才去吃飯。

所以,要我請你吃飯就用同步的方法,要請我吃飯就用異步的方法,這樣你可以省錢。
--------------------------------------------------------------------------------------------------------------------
舉個例子 打電話時同步 發消息是異步

看看open方法的幾個參數。

.open (http-method, url, async, userID, password)

(後面是帳號和密碼,在禁止匿名訪問的http頁面中,需要用户名和口令)

首先看看異步處理方式。

其中async是一個布爾值。如果是異步通信方式(true),客户機就不等待服務器的響應;如果是同步方式(false),客户機就要等到服務器返回消息後才去執行其他操作。我們需要根據實際需要來指定同步方式,在某些頁面中,可能會發出多個請求,甚至是有組織有計劃有隊形大規模的高強度的request,而後一個是會覆蓋前一個的,這個時候當然要指定同步方式:Flase。

$.ajax({ 
        type: "post", 
       url: "path", 
       cache:false, 
       async:false, 
        dataType: ($.browser.msie) ? "text" : "xml", 
         success: function(xmlobj){ 
        } 
});

五、js 中json字符串和對象互相轉換

var str1='{"name":"cxh","sex":"man"}';
var obj={"name":"cxh","sex":"man","address":[{"province":"shanghai","city":"shanghai","post":"26000"}]};

alert(obj.address[0].city);//shanghai

var obj1=JSON.parse(str1);
alert(obj1.name);
var str2=JSON.stringify(obj);
alert(str2.length);

 

六、數據庫中 case when 的使用方法

select * from user_info;
+------------+--------+-------------+----------+------+-----------+
| userInfoId | userId | phone       | address  | age  | education |
+------------+--------+-------------+----------+------+-----------+
|          1 |      2 | NULL        | NULL     | NULL | NULL      |
|          2 |      3 | NULL        | NULL     | NULL | NULL      |
|          3 |      1 | 13145682001 | 中國安徽 |   28 | 博士      |
|          4 |      4 | NULL        | NULL     | NULL | NULL      |
|         17 |     17 | 123456789   | 中通     |   27 | 大專      |
+------------+--------+-------------+----------+------+-----------+ 
select userId,case address when '中通' then '中國' else address end as address from user_info;  
+--------+----------+
| userId | address  |
+--------+----------+
|      2 | NULL     |
|      3 | NULL     |
|      1 | 中國安徽 |
|      4 | NULL     |
|     17 | 中國     |
+--------+----------+ 
select userId,case  when address is null then '中國' else address end as address from user_info;  
+--------+----------+
| userId | address  |
+--------+----------+
|      2 | 中國     |
|      3 | 中國     |
|      1 | 中國安徽 |
|      4 | 中國     |
|     17 | 中通     |
+--------+----------+