请问大家:MySQL查询时只会使用一个索引吗?就是说无论你建了几个索引,mysql系统只会选择一个来使用吗?当数据量上千万甚至过亿时,类似下面的查询要建立怎样的索引才好呢?select count(DISTINCT 统计ip) from 统计表 where 软件编号=1 and 软件版本=1 and 渠道编号=1 and 软件行为=start and date(统计时间)=date("Y-m-d") 或 select count(DISTINCT 客户端特征编码) from 统计表 where 软件编号=1 and 软件版本=1 and 渠道编号=1 and 软件行为=start and date(统计时间)=date("Y-m-d") 多谢!
2) 创建索引 create index axx on 统计表(统计时间,软件编号,软件版本,渠道编号,软件行为)
那么请问怎么样提高各地分散的点的插入效率,比如是否需要建立所谓的连接线程缓存(Thread_Cache池)?会不会有效果?再比如是否需要缓存表的句柄?这样每个插入的用户就不用重复打开表了?另外就是在插入的时候,系统是否会自动写日志,那么如果将日志停掉,是否也能够提高一些效率?
多谢指点~
是不是说只需创建一个组合索引就够了?不用创建单列索引了?
我在网上看到一句话:“如果单机的cpu能够承受站点的并发数,应该选择分表的方式,因为分表相对简单,容易实现scale,而且涉及到多表连接时,分区是不能直接使用join的。但如果站点并发数太大,需要多个cpu来访问多个数据库是无疑的,这时需要选择分区的方式。”如果是这样的话,我想我们前期只使用一台服务器就应该能够承受并发,这样看来,分表将是更好的选择。
如果要大数据量可以使用第三方索引工具,楼上说过了