Maison > base de données > tutoriel mysql > MySQL索引之隔离列

MySQL索引之隔离列

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Libérer: 2016-06-07 17:57:56
original
841 Les gens l'ont consulté

如果在查询中没有隔离索引的列,mysql通常不会使用索引。隔离列意味着它不是表达式的一部分,也没有位于函数中。 例如: mysqlselect id from test where id +1 =5; 我们能轻易地看出where子句中的id等4,但是mysql却不会帮你求解方程,这取决于自己。我们应

如果在查询中没有隔离索引的列,mysql通常不会使用索引。“隔离“列意味着它不是表达式的一部分,也没有位于函数中。

例如:

mysql>select id from test where id +1 =5;

我们能轻易地看出where子句中的id等4,但是mysql却不会帮你求解方程,这取决于自己。我们应该养成简化where子句的习惯,这样就会把被索引的列单独放在比较运算符的一边。

再例如:

mysql>select ... where TO_DAYS(CURRENT_DATE) - TO_DAYS(date_col)
这个查询会查找date_cool值离今天不超过10天的所有行,但是它不会使用索引,因为使用了TO_DAYS()函数。

稍作修改:

mysql>select ... where data_cool >= DATE_SUB(CURRENT_DATE,INTERVAL 10 DAY);

这个查询就可以使用索引,但是它还可以改进。使用CURRENT_DATE将会阻止查询缓存把结果缓存起来,可以用常量替换掉CURRENT_DATE的值:

mysql>select ... where date_cool >= DATE_SUB('2012-08-29',INTERVAL 10 DAY);
Étiquettes associées:
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers numéros
MySQL arrête le processus
Depuis 1970-01-01 08:00:00
0
0
0
Env中mysql
Depuis 1970-01-01 08:00:00
0
0
0
Erreur lors de l'installation de MySQL sous Linux
Depuis 1970-01-01 08:00:00
0
0
0
php - problème de surveillance MySQL
Depuis 1970-01-01 08:00:00
0
0
0
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal