通达OA提速 检查表索引,删除重复索引,并建立必要的新索引

系统管理 -> 数据库管理 -> 数据库脚本导入
放到这个目录中MYOA/webroot/update/,重新登录oa系统
 

<?
include_once("inc/conn.php");
include_once("inc/utility_all.php");
//--------------------------------------   检查表索引,删除重复索引,并建立必要的新索引----------------------------
$INDEX_ARRAY=array(
   "ADDRESS" => array('USER_ID','GROUP_ID','PSN_NAME'),
   "ADDRESS_GROUP" => array('GROUP_NAME','USER_ID','ORDER_NO'),
   "AFFAIR" => array('USER_ID','BEGIN_TIME','END_TIME'),
   "ATTEND_DUTY" => array('USER_ID','REGISTER_TIME'),
   "ATTEND_HOLIDAY" => array('BEGIN_DATE','END_DATE'),
   "ATTEND_LEAVE" => array('USER_ID','LEADER_ID','LEAVE_DATE1','LEAVE_DATE2'),
   "ATTEND_OUT" => array('USER_ID','LEADER_ID','CREATE_DATE','SUBMIT_TIME'),
   "BBS_BOARD" => array('BOARD_NO'),
   "BBS_COMMENT" => array('USER_ID','BOARD_ID','SUBMIT_TIME','PARENT'),
   "BOOK_INFO" => array('ISBN','TYPE_ID','DEPT','BOOK_NO'),
   "CALENDAR" => array('USER_ID','CAL_TIME','END_TIME','MANAGER_ID'),
   "DEPARTMENT" => array('DEPT_NO','DEPT_PARENT'),
   "DIARY" => array('USER_ID','DIA_DATE','DIA_TIME'),
   "DIARY_COMMENT" => array('USER_ID','DIA_ID','SEND_TIME'),
   "EMAIL" => array('TO_ID','BOX_ID','BODY_ID'),
   "EMAIL_BODY" => array('FROM_ID','SUBJECT','SEND_TIME'),
   "EMAIL_BOX" => array('USER_ID','BOX_NO','BOX_NAME'),
   "FIELD_DATE" => array('TABLENAME','FIELDNO','IDENTY_ID'),
   "FIELDSETTING" => array('TABLENAME','FIELDNO','FIELDNAME','ORDERNO'),
   "FILE_CONTENT" => array('SORT_ID','SUBJECT','SEND_TIME','USER_ID','CONTENT_NO'),
   "FILE_SORT" => array('DEPT_ID','SORT_PARENT','SORT_NO','SORT_NAME'),
   "FLOW_RUN_PRCS" => array('RUN_ID','USER_ID','PRCS_ID'),
   "FLOW_RUN" => array('RUN_ID','FLOW_ID','RUN_NAME','BEGIN_TIME','END_TIME'),
   "FLOW_RUN_DATA" => array('RUN_ID'),
   "FLOW_PROCESS" => array('FLOW_ID','PRCS_ID'),
   "FLOW_RUN_FEEDBACK" => array('RUN_ID','PRCS_ID'),
   "FLOW_RULE" => array('FLOW_ID','USER_ID','BEGIN_DATE','END_DATE'),
   "FLOW_TYPE" => array('FLOW_SORT','FORM_ID'),
   "FLOW_FORM_TYPE" => array('DEPT_ID'),
   "MYTABLE" => array('MODULE_NO'),
   "NETDISK" => array('DISK_NO'),
   "NEWS" => array('SUBJECT','PROVIDER','NEWS_TIME'),
   "NEWS_COMMENT" => array('PARENT_ID','NEWS_ID','USER_ID','RE_TIME'),
   "NOTIFY" => array('FROM_DEPT','FROM_ID','SUBJECT','SEND_TIME','BEGIN_DATE','END_DATE','AUDITER','AUDIT_DATE'),
   "PLAN_TYPE" => array('TYPE_NO'),
   "SMS" => array('TO_ID','BODY_ID'),
   "SMS2" => array('FROM_ID','PHONE','SEND_TIME'),
   "SMS3" => array('PHONE','SEND_TIME'),
   "SMS_BODY" => array('FROM_ID','SMS_TYPE','SEND_TIME'),
   "SYS_CODE" => array('CODE_NO','CODE_ORDER','PARENT_NO'),
   "SYS_LOG" => array('USER_ID','TIME','TYPE'),
   "USER" => array('USER_ID','USER_NAME','USER_PRIV','DEPT_ID','BYNAME','USER_NO'),
   "USER_GROUP" => array('USER_ID','ORDER_NO'),
   "VOTE_DATA" => array('USER_ID','ITEM_ID','FIELD_NAME'),
   "VOTE_ITEM" => array('VOTE_ID'),
   "VOTE_TITLE" => array('PARENT_ID','FROM_ID','SEND_TIME','BEGIN_DATE','END_DATE','VOTE_NO'),
   "WEBMAIL" => array('USER_ID','EMAIL'),
   "WINEXE" => array('USER_ID','WIN_NO'),
   "WORK_DETAIL" => array('PLAN_ID','WRITE_TIME','WRITER'),
   "WORK_PERSON" => array('PLAN_ID','PUSER_ID','PBEGEI_DATE','PEND_DATE'),
   "WORK_PLAN" => array('BEGIN_DATE','END_DATE','CREATOR','CREATE_DATE')
);

foreach($INDEX_ARRAY as $TABLE_NAME => $INDEX)
{
   $Column_name_str="";
   $query="SHOW INDEX FROM `".$TABLE_NAME."`";
   $cursor=exequery($connection, $query);
   while($ROW=mysql_fetch_array($cursor))
   {
      $Column_name=$ROW["Column_name"];
      $Key_name=$ROW["Key_name"];
      if(find_id($Column_name_str,$Column_name))
      {
         $query="ALTER TABLE `".$TABLE_NAME."` DROP INDEX `".$Key_name."`";
         @exequery($connection, $query);
      }
      else
      {
         $Column_name_str.=$Column_name.",";
      }
   }

   foreach($INDEX as $Column_name)
   {
      if(find_id($Column_name_str,$Column_name))
         continue;
      $query="ALTER TABLE `".$TABLE_NAME."` ADD INDEX ( `".$Column_name."` ) ";
      @exequery($connection, $query);
   }
}

?>

针对通达OA2013系统的通讯簿数据表,建立有效的索引是提升查询效率的关键。首先,需要识别哪些字段是经常作为查询条件出现的。例如,在通讯簿中,姓名、电话号码或电子邮件地址可能是查询频率最高的字段。基于这些字段,可以创建索引来优化查询过程。 参考资源链接:[通达OA2013数据库字段详解及注释](https://wenku.youkuaiyun.com/doc/27c8y89mty?spm=1055.2569.3001.10343) 假设我们选择'姓名'字段作为主要查询条件,可以通过以下SQL语句为'address'表的'姓名'字段创建索引: ```sql CREATE INDEX idx_name ON address (name); ``` 在创建索引之前,建议使用`EXPLAIN`语句分析查询,查看是否存在表扫描等问题。创建索引后,再次使用`EXPLAIN`检查索引是否被有效利用,确保查询性能得到提升。同时,索引的创建也会占用额外的存储空间,因此在创建索引前需要评估存储空间是否足够。 对于多字段的复合查询,例如既要通过'姓名'又要通过'部门'进行筛选,可以创建复合索引: ```sql CREATE INDEX idx_name_department ON address (name, department); ``` 复合索引的顺序也很重要,应根据查询条件出现的频率和数据分布来决定索引字段的顺序。此外,索引非越多越好,过多的索引会降低数据的插入、更删除效率,因此需要在查询效率和维护成本之间寻找平衡。 如果通达OA2013系统的通讯簿数据表中还没有建立索引,或者现有索引不满足性能需求,可以根据上述方法创建索引通过实际的查询测试来验证优化效果。对于数据库的持续性能调优,建议定期回顾索引的有效性和查询计划,确保系统能够持续稳定地运行。 参考资源链接:[通达OA2013数据库字段详解及注释](https://wenku.youkuaiyun.com/doc/27c8y89mty?spm=1055.2569.3001.10343)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值