2010-07-09 117 views
0

我遇到了很多问题,并且知道我可以在这里得到一些很好的答案!Mysql存储过程动态查询

好的有点2部分的问题。
第1部分我正在做一些非常大的数据更新,主要是调整表格。 所以问题是我应该使用一个MySQL存储过程或像普通的mysql/php。 我目前正处于存储的产品框架。 的原因是

  • 一)更快
  • b)否超时。

如果有人有任何其他意见,请告诉我。

P.S我们正在谈论一大堆数据。喜欢超过150万行

第二部分。
在存储过程中,我该如何做一个查询,只会返回一行,只是给我那一行。此外,查询有点动态,所以像

SET tag_query = concat('SELECT tag_id FROM tags WHERE tag = "',split_string_temp,'"'); 

任何线索?
我似乎无法找到任何关于此语言的简单内容!

在此先感谢您的帮助。

理查德

回答

0

你的问题有点模糊,所以我就到你的包含代码一块回应。

如果您想从标签名称中获取tag_id,我会推荐使用存储的函数而不是存储过程。

事情是这样的:

DELIMITER $$ 

DROP FUNCTION IF EXISTS GET_TAG_ID $$ 

CREATE FUNCTION GET_TAG_ID(P_TAG_NAME varchar(255)) RETURNS int 
BEGIN 
    DECLARE v_return_val INT; 
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET v_return_val = -1; 

    IF (P_TAG_NAME IS NULL) 
    THEN 
    RETURN NULL; 
    END IF; 

    select tag_id 
    into v_return_val 
    from TAGS 
    where tag = P_TAG_NAME; 

    RETURN v_return_val; 
END $$ 

DELIMITER ; 
+0

啊,存储的函数mm。谢谢你的帮助。 因此,要回答这个问题,程序和函数之间有什么区别? – 2010-07-12 08:47:41

+0

函数返回一个值。程序没有。 – 2010-07-12 13:17:24

+0

感谢最有帮助的 – 2010-07-15 08:16:35

0

更新一次数据(不作为经常性的工作),我宁愿使用GUI管理像phpMyAdmin或SQLyog的发行直接SQL命令(当然是有一个良好的备份!)因为您可以快速查看结果,无需担心除主要任务之外的其他事情。

+0

嗯,是的,但它不像一个快速的mysql语句那么简单,实际上这是我的第一次尝试!数据太多,尽管我在一夜之间离开了这些查询,但他们只获得了1/7的通过! 通常情况下,我会和你一起去,也许几个mysql查询和一个php脚本可以完成这项工作,但不幸的是不适合我! 感谢您的帮助。 理查德 – 2010-07-12 08:50:46