mysql错误检讨
Q1:代码占用时间过长的原因
① 在中兴项目里面,我加入了一行select count(distinct(BILL_ID)) from cell_update
这一行“废物”代码占用了绝大部分程序运行时间,使得程序运行时间加长特别多。
② 链接数据库”这一步会耗费大量时间。建议不要加入到循环中去
③ 为什么某些代码运行时间比较短,有些代码运行时间过长。有可能是索引未建立完全。
具体原理看这个:http://blog.csdn.net/yunhua_lee/article/details/8573621
但是实际原因就是索引没有建立完全。
④ 如果sql语言中,带有无法建立索引的模块,处理大数据就会非常慢。我在cell_update中放入了新的表,提取用户的“天数小时”信息,最后每一条的查询速度由几百毫秒降低到了几毫秒
⑤ 有时候建立联合索引比建立单独索引快
Q2:mysql中的陷阱:
① “mysql中的limit“的陷阱:”limit"只负责将查询结果返回特定的行数。比如说有一个10000000的数据集,我们进行select count(*) from xxx limit 0,1000,这个语 句不会返回1000,而是返回10000000.因为limit只是“将结果中的某几个返回”。我们的结果只有一条:1000000000,所以只会返回这个。
② select * from table where id in (select id from table limit 10) 无法执行
但是,只要你再来一层就行。。如:
select * from table where id in (select t.id from (select * from table limit 10)as t)