我有以下删除SQL语句:
从table1中删除w,r w,table2 r其中(w.status = 1或r.status = 1)
显示引擎innodb状态显示如下。 读取率(237.29读/秒)是指读取后的读取(where)条件? 或者它指的是filter之前的连接的所有元素? 这一点很重要,因为我正在测量完成查询所需的时间。 两个表都非常大,但是过滤结果相对较小。
行业 -------------- 1在InnoDB内查询,0在队列中查询 1读取InnoDB内部打开的视图 主线程进程号 5163,id 1090357568,状态:正在等待服务器活动 插入的行数25005429,更新了1722842,删除了371088,读取了2176564571 0.00插入/秒,0.00更新/秒,0.00删除/秒,237.29读/秒
我错了,或者你没有在w和r上指定任何连接条件? 这意味着你正在做两个表的大笛卡尔连接,这肯定比2删除查询长,每个表上一个。
你们有没有什么东西可以让你们彼此相连,比如:
delete w,r from table1 w ,table2 r where (w.r_id=r.r_id) and (w.status=1 or r.status=1)
或者至less你可以join他们的状态领域。 显然,索引状态字段是必须的。