非持久化统计信息
统计信息没有保存在磁盘上,而是频繁的实时计算统计信息;
每次对表的访问都会重新计算其统计信息;
假设针对一张大表的频繁查询,那么每次都要重新计算统计信息,很耗费资源。
持久化统计信息
把一张表在某一时刻的统计信息值保存在磁盘上;
避免每次查询时重新计算;
如果表更新不是很频繁,或者没有达到 MySQL 必须重新计算统计信息的临界值,可直接从磁盘上获取;
即使 MySQL 服务重启,也可以快速的获取统计信息值;
统计信息的持久化可以针对全局设置也可以针对单表设置。
接下来,详细说 MySQL 统计信息如何计算,何时计算,效果评估等问题。在 MySQL Server 层来控制是否自动计算统计信息的分布,并且来决策是持久化还是非持久化。
这个问题按照楼上给你的办法(也符合你要求的)可以实现,但是如果这个数组比较大的时候比较费资源,不建议用IN *** 作。你要的结果是入库表(出库表也一样,暂时不考虑)中相应图书的数量,简单的讲格式如下:
图书类型 数量
励志类 1546
生活类 2451
语言类 7584
我的思路是:类型表和入库表相连,按照图书类型分组即可得到你要的如上信息,效率比你要的sql要好的多!!
select * from A inner join B on (A.Id=B.Aid) where A.age<16 and B.所选课程=数学(A.Id=B.Aid)是A表和B表的关系
Sql语句是这样的
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)