我mysql数据查询的数据过多,查询很慢,大家说用索引,可是没有接触有索引。求实例

如题所述

你先看看那些语句执行慢 在where XX= 比较多的地方 order by XX 比较多的地方 ,数据不大(不是text或以上)的XX 建立索引即可提升速度
索引的知识是数据库入门很重要的地方,mysql很多引擎都使用树状结构,数据是叶子,索引是树枝.
在语句优化方面 尽量使用索引 如select count(*) 时候 明明知道所有时间都>0 但因为时间是索引 所以 还会加上 where 时间>0

索引提升查询速度的同时,会占用空间,对写入速度有一些影响,所以尽量不要在大数据方面做索引,大型如二进制格式,文章内容字段等

查询数据过多 必须进行分页(LIMIT) 截取需要的部分.
另外 mysql分页是比较笨的 例如 limit 20,1000 那么系统将到达200020条数据 再舍弃200000条数据,成本很高,必须要先查出部分索引数据,再把其他数据用join的方式并回来.

给个参考 PHP:
$sqlIndex="SELEECT {$index} from {$table} where {$where}";
$sql = "SELECT $keys FROM {$table} INNER JOIN({$sqlIndex}) AS lim USING({$index}) LIMIT $start,$pagesize"

@table string要查询的表 如"table1"
@keys string 要查询的键值,多个键值用","分割
如"key1,key2,key3"结束不含","尽量少用"*"且一些关键词请加上`;
@Index string主索引键或者唯一索引键名,只需要一个 如"id";
@start limit截取页面
@pagesize int 分页大小,必须,你不会想这么多数据全部出来吧
@orderby string 排序 如"id desc";可空,但不建议空

参考资料:http://www.oschina.net/code/snippet_118072_12410

来自:求助得到的回答
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-01-11
在主键和Select语句相关字段上做索引即可,创建索引的SQL语法自己去学吧,很简单。本回答被提问者采纳

mysql数据量上十万条后,查询慢导致服务器卡有什么解决办法
如果我们自己是 MySQL,在执行非关联子查询时,可以使用很简单的策略:select from A where A.x not in (select x from B where ...) \/\/非关联子查询:1. 扫描 B 表中的所有记录,找到满足条件的记录,存放在临时表 C 中,建好索引2. 扫描 A 表中的记录,与临时表 C 中的记录进行比对,...

mysql数据量上十万条后,查询慢导致服务器卡有什么解决办法
14.并不是所有索引对查询都有效,SQL是根据表中数据来进行查询优化的,当索引列有大量数据重复时,SQL查询可能不会去利用索引,如一表中有字段sex,male、female几乎各一半,那么即使在sex上建了索引也对查询效率起不了作用。15.索引并不是越多越好,索引固然可 以提高相应的 select 的效率,但同时也...

mysql数据库表中有索引为什么还是查询慢?
1、字段类型不匹配可能导致索引失效。2、表达式计算或使用内置函数的字段会失效索引。3、使用左模糊匹配或左右模糊匹配会导致索引失效,而使用右模糊匹配仍能利用索引。4、使用LIKE操作符时,如果条件以%开头,索引无法利用,需全表扫描。5、联合索引时,索引失效可能由于非最左字段使用。6、OR分割的条件中...

MySQL百万级数据量分页查询方法及其优化建议
这种情况因为type没有使用索引也会导致查询速度变慢。但是只添加type为索引查询速度还是很慢,是因为查询的数据量太多了。这个时候考虑添加组合索引,组合索引的顺序要where条件字段在前,id在后,如 (type,id),因为组合索引查询时用到了type索引,而type跟id是组合索引的关系,如果只select id ,那么直接...

mysql 大量数据查询速度慢,sql语句求解!
利用索引, 用union all代替in, 如 select * from tab where id in (1,2), 可写成select * from tab where id = 1 union all select * from tab where id = 2 但是上面的优化起不到根本效果, 如果100万 1000万数据怎么办, 难道每次都要全部查出来嘛, 那是不可能的, 而且你的页面也...

mysql全文索引 很慢,速度不如like的百分之一
你所设置的fulltext索引再次没有用到,原因是like字句中开始部分为模糊匹配%时候用不了全文索引,这与fulltext存储机制有关。另,你说的删除速度慢,原因:设置fulltext字段设置太多,fulltext索引在更新删除大量数据时候,需要同步更改索引,你的三个fulltext压力太大!改进方法:1、删除a_content_split...

mysql中10万条记录查询慢的解决办法?
我用的是mysql+ibatis,以下为代码:<selectid="wareListSelect"parameterClass="com.goldf.ware... 我一个表中有接近10万条记录,查询非常慢。请高手看看我的SQL怎么写能提高查询效率。我用的是mysql+ibatis,以下为代码: select ware_id, ware_name, ware_type, ware_custom1, ware_custom2, ware_no, ware_...

处理上百万条的数据库如何提高处理查询速度_MySQL
=或操作符,否则将引擎放弃使用索引而进行全表扫描。4、应尽量避免在 where 子句中使用 or 来连接条件,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num=10 or num=20可以这样查询:select id from t where num=10union allselect id from t where num=205、in 和 ...

MySQL数据查询的最新技巧无需索引轻松查找数据mysql不用索引查数据
1.使用相似查询 相似查询是一种无需索引的查询方式,它通过比较相似性来快速查找数据。在MySQL中,我们可以通过使用LIKE操作符进行相似查询。如下所示:SELECT * FROM table WHERE column LIKE ‘%keyword%’;其中,”table”是我们要查询的表名,”column”是我们要...

php+mysql在数据库里数据大的话查询很慢
情况1:远程查询,其实可能查询不慢,由于数据量大,传输过程慢 情况2:WHERE 后面的比较数据太多,比如 like 类的语句 情况3:需要哪个字段只取那个字段就行了,比如select * from a与select b,c,d from a速度是有差距的 3.数据库定期维护,压缩,把不常用的数据备份后放入备份库里,查询时查备份...

相似回答