我可以说,优化mysql的许多方法之一是减少查询的数量?我可以在一个查询中执行mysql Select,Update和Delete吗?
如果是这样,我能做到这一点:
在一个查询- Select "data" => $A from table X
- Update $A from table Y
- Delete $A from table X
?
我可以说,优化mysql的许多方法之一是减少查询的数量?我可以在一个查询中执行mysql Select,Update和Delete吗?
如果是这样,我能做到这一点:
在一个查询- Select "data" => $A from table X
- Update $A from table Y
- Delete $A from table X
?
你可以用”减少查询的数量 - 他们都做不同的事情 - 但你可以减少e数据库的往返次数以及通过将所有数据包装为PLSQL函数进行解析的次数。
但是你无法选择你的数据已经删除后.....但考虑:
CREATE PROCEDURE s_u_d(a)
BEGIN
UPDATE tab_x SET tab_x.avalue=1 WHERE tab_x.another=a;
DELETE FROM tab_y WHERE tab_y.avalue=a;
SELECT *
FROM tab_x
WHERE tab_x.another=a;
END;
NB - 你也可以在同一个程序运行多个选择和处理多个不同整形结果集,例如see this page
NO,
只能结合
这不是MySQL的优化只是
有道因为每个查询来与不同的查询成本。
而且在MyISAM中,它涉及到表级锁写
举例UPDATE和SELECT
/* this will update TABLE_A if ID in TABLE_B exist in TABLE_A */
UPDATE TABLE_A, TABLE_B
SET TABLE_A.SOME_COLUMN=TABLE_B.SOME_COLUMN
WHERE TABLE_A.ID=TABLE_B.ID
/* or */
UPDATE TABLE_A
SET SOME_COLUMN = (SELECT SOME_COLUMN_B FROM TABLE_B WHERE ... LIMIT 1)
举例DELETE和SELECT
DELETE FROM TABLE_A WHERE TABLE_A IN(SELECT ID FROM TABLE_B)
能否请你告诉我SELECT和UPDATE例如3个查询? – 2010-12-03 09:46:02
创建一个存储过程:
DELIMITER //
create procedure empproc(in name varchar(255),in fathername varchar(255),in password varchar(255))
begin
Select * from xemp where uname = name and fname = fathername;
insert into xemp values(name,fathername,password);
end //
delimiter ;
Java代码的.....
import java.sql.*;
public class StoredProcedure {
public static void main(String a[])throws Exception {
Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/01jim2010","root","");
CallableStatement calstat=conn.prepareCall("{call empproc(?,?,?)}");
calstat.setString(1,"Jimit");
calstat.setString(2,"Temp");
calstat.setString(3,"Temp");
ResultSet rs = calstat.executeQuery();
conn.close();
calstat.close();
System.out.println("Your data has been inserted into table.");
}
}
都能跟得上它仍然只是伪造togheter – Breezer 2010-12-03 09:42:27