如何明确建立索引 想请教一下大家,如果我建了索引,发现实际情况并没有用到,如果能明确指定一个索引呢?另外我用explain去分析查询语句,怎么根据这个结果去调整呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 要想强制MySQL使用或忽视possible_keys列中的索引,在查询中使用FORCE INDEX、USE INDEX或者IGNORE INDEX 一般来说,MySQL应该按规则找到最佳的执行方案,不需要你去调整。如果有问题可以先analyze table来重新生成一下统计分析结果。如果没有选择索引,键是NULL。要想强制MySQL使用或忽视possible_keys列中的索引,在查询中使用FORCE INDEX、USE INDEX或者IGNORE INDEX。参见13.2.7节,“SELECT语法”。尝试下面的技巧以避免优化器错选了表扫描:· 使用ANALYZE TABLE tbl_name为扫描的表更新关键字分布。参见13.5.2.1节,“ANALYZE TABLE语法”。· 对扫描的表使用FORCE INDEX告知MySQL,相对于使用给定的索引表扫描将非常耗时。参见13.2.7节,“SELECT语法”。· SELECT * FROM t1, t2 FORCE INDEX (index_for_column)· WHERE t1.col_name=t2.col_name;http://dev.mysql.com/doc/refman/5.1/zh/optimization.html#how-to-avoid-table-scan7.2.15. 如何避免表扫描 SELECT * FROM TABLE1 USE INDEX (FIELD1, FIELD2) …orSELECT * FROM TABLE1 FORCE INDEX (FIELD1) 还能问下您,如果根据EXPLAIN的结果去优化呢,比如TYPE类型为ALL,它的效率肯定不好,什么时候用什么索引速度能更快呢?怎么判断一个表的索引建立的合不合适呢 对扫描的表使用FORCE INDEX告知MySQL,相对于使用给定的索引表扫描将非常耗时---这句话的意思是不是使用强制索引要比不使用时熬时更多啊? 根据你的SQL语句来判断,一般来讲,在连接字段上建立索引,你的问题太大,举个具体例子吧 什么时候用什么索引速度能更快呢?怎么判断一个表的索引建立的合不合适呢表比较大的时候,索引上的势也比较大(值比较分散,比如你1000000记录,按男女建索引显示效率没什么大影响)。 根据你的查询可以判断你的索引是否合适,看explian的结果了。 ---这句话的意思是不是使用强制索引要比不使用时熬时更多啊? 这个中文的理解是这样。(MySQL的中文帮助翻译得很差,建议中英文一起看)Use FORCE INDEX for the scanned table to tell MySQL that table scans are very expensive compared to using the given index: 用FORCE INDEX 告诉MySQL全表描扫比我给你的索引更耗资源。(我翻得也不怎么样。) 文本数据导入mysql MySql手工注入,累人 这个数据库表要怎么设计 请教MySQL中如何判断某一天是那一年的第几周啊 初接触 mysql 求指引。。。 关于存储过程传参数问题 SQL行列转换 用mysql的create database命令建立的数据库究竟放在哪个路径下 mysql现在支持view了么? mysql数据库是什么 批量增加記錄 想让postgresql每天对某表自动插入一行,该如何实现呢?求教
如果有问题可以先analyze table来重新生成一下统计分析结果。如果没有选择索引,键是NULL。要想强制MySQL使用或忽视possible_keys列中的索引,在查询中使用FORCE INDEX、USE INDEX或者IGNORE INDEX。参见13.2.7节,“SELECT语法”。尝试下面的技巧以避免优化器错选了表扫描:· 使用ANALYZE TABLE tbl_name为扫描的表更新关键字分布。参见13.5.2.1节,“ANALYZE TABLE语法”。
· 对扫描的表使用FORCE INDEX告知MySQL,相对于使用给定的索引表扫描将非常耗时。参见13.2.7节,“SELECT语法”。
· SELECT * FROM t1, t2 FORCE INDEX (index_for_column)
· WHERE t1.col_name=t2.col_name;http://dev.mysql.com/doc/refman/5.1/zh/optimization.html#how-to-avoid-table-scan
7.2.15. 如何避免表扫描
or
SELECT * FROM TABLE1 FORCE INDEX (FIELD1)
,它的效率肯定不好,什么时候用什么索引速度能更快呢?怎么判断一个表的索引建立的合不合适呢
---这句话的意思是不是使用强制索引要比不使用时熬时更多啊?
举个具体例子吧
Use FORCE INDEX for the scanned table to tell MySQL that table scans are very expensive compared to using the given index: 用FORCE INDEX 告诉MySQL全表描扫比我给你的索引更耗资源。(我翻得也不怎么样。)