请问下下面这句话的意思,看不懂啊,如果有例子就更好了
使用内连接查找的记录在连接数据表中不存在,并且在WHERE子句中尝试一下操作:column_name IS NULL 。如果 column_name 被指定为 NOT NULL,MySQL将在找到符合连接着条件的记录后停止搜索更多的行(查找冲突)
使用内连接查找的记录在连接数据表中不存在,并且在WHERE子句中尝试一下操作:column_name IS NULL 。如果 column_name 被指定为 NOT NULL,MySQL将在找到符合连接着条件的记录后停止搜索更多的行(查找冲突)
2017-08-07
explain SELECT goods_name FROM tdb_goods INNER JOIN tdb_goods_brands ON tdb_goods.brand_id = tdb_goods_brands.brand_id WHERE goods_id > 40 AND goods_name IS NULL;
前面加的explain代表分析这段查询的执行,表中goods_name字段被我设置成了NOT NULL,分析的结果是
id, select_type, table, partitions, type, possible_keys, key, key_len, ref, rows, filtered, Extra
'1', 'SIMPLE', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'Impossible WHERE'
看到没,最后是Impossible WHERE,如果把goods_name字段被设置成了允许 NULL
分析结果是
# id, select_type, table, partitions, type, possible_keys, key, key_len, ref, rows, filtered, Extra
'1', 'SIMPLE', 'tdb_goods', NULL, 'range', 'PRIMARY', 'PRIMARY', '2', NULL, '1', '10.00', 'Using where'
'1', 'SIMPLE', 'tdb_goods_brands', NULL, 'eq_ref', 'PRIMARY', 'PRIMARY', '2', 'test.tdb_goods.brand_id', '1', '100.00', 'Using index'。这说明上面的Impossible WHERE是很快就被发现了,设置冲突了。而下面这个是需要做查询的。
在别处找到了一篇关于SQL查询语句执行过程的博文,大家一起看看,感觉比老师这段视频的作用好。http://www.cnblogs.com/annsshadow/p/5037667.html
举报