之前是搞oracle,最近接触了mysql,有几个问题想咨询下大家。
我的mysql版本:
5.1.55-log
1.mysql中select语句后面的procedure子句的作用是什么?
[PROCEDURE procedure_name(argument_list)]2.存储过程的返回的结果集(1个select语句)能否通过select * from procedure_name这种形式来访问。
或者有没有变通的处理方式,比如在function里掉存储过程,然后select funtion_name这样。3.mysql表分区需要打一个补丁才能支持?(我们这边的运维人员说的)SHOW VARIABLES LIKE '%partition%';
have_partitioning NO能不能说下如何才能让mysql支持表分区4.我查了下mysql的文档 好像没看到索引类型里有位图索引,mysql的索引全是B树索引吧

解决方案 »

  1.   

    1.mysql中select语句后面的procedure子句的作用是什么?
    [PROCEDURE procedure_name(argument_list)]
    这个是建存储过程的语法吧  create procedure sp_name()2.存储过程的返回的结果集(1个select语句)能否通过select * from procedure_name这种形式来访问。
    或者有没有变通的处理方式,比如在function里掉存储过程,然后select funtion_name这样。
    不能  只能call  sp_name()3.mysql表分区需要打一个补丁才能支持?(我们这边的运维人员说的)
    SHOW VARIABLES LIKE '%partition%';
    have_partitioning NO能不能说下如何才能让mysql支持表分区不需要补丁  就是一个动态参数的事   set  global have_partitioning=yes;
    4.我查了下mysql的文档 好像没看到索引类型里有位图索引,mysql的索引全是B树索引吧
    mysql没有位图索引  有B树和hash索引
      

  2.   


    看mysql的官方文档,select的语法
    SELECT
        [ALL | DISTINCT | DISTINCTROW ]
          [HIGH_PRIORITY]
          [STRAIGHT_JOIN]
          [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]
          [SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS]
        select_expr [, select_expr ...]
        [FROM table_references
          [PARTITION partition_list]
        [WHERE where_condition]
        [GROUP BY {col_name | expr | position}
          [ASC | DESC], ... [WITH ROLLUP]]
        [HAVING where_condition]
        [ORDER BY {col_name | expr | position}
          [ASC | DESC], ...]
        [LIMIT {[offset,] row_count | row_count OFFSET offset}]
        [PROCEDURE procedure_name(argument_list)]
        [INTO OUTFILE 'file_name'
            [CHARACTER SET charset_name]
            export_options
          | INTO DUMPFILE 'file_name'
          | INTO var_name [, var_name]]
        [FOR UPDATE | LOCK IN SHARE MODE]]
      

  3.   


    MYSQL官方文档中有介绍,有过ORACLE经验一定会经常查询ORACLE的在线文档吧。
    通俗的讲,可以利用存储过程来对SELECT的结果集进行分析处理。
      

  4.   


    MYSQL中没有这种方法,变通的实现方法是在存储过程中将结果集写入临时表。
      

  5.   

    没有这种说法。
    MYSQL没有位图索引。有BTREE, HASH ,RTREE 三种索引。
      

  6.   

    1.mysql中select语句后面的procedure子句的作用是什么?
     很少用这种方法 2.存储过程的返回的结果集(1个select语句)能否通过select * from procedure_name这种形式来访问。
     或者有没有变通的处理方式,比如在function里掉存储过程,然后select funtion_name这样。
     没有这种用法,只能将结果写入临时表中,再访问 3.mysql表分区需要打一个补丁才能支持?(我们这边的运维人员说的)
     
    MYSQL什么版本?系统什么版本 能不能说下如何才能让mysql支持表分区 不需要补丁  就是一个动态参数的事   set  global have_partitioning=yes;
     4.我查了下mysql的文档 好像没看到索引类型里有位图索引,mysql的索引全是B树索引吧
     mysql没有位图索引 
      

  7.   

    mysql sql语句允许调用存储过程吗?类似这样的:SELECT * FROM emp WHERE empno IN (CALL getEids(1));其中getEids(1)是一个存储过程,返回的是一张临时表,表就有一个字段id