gpt4 book ai didi

mysql - 优化 Join sentence with foreign keys, and show records with null

转载 作者:行者123 更新时间:2023-11-29 02:08:29 25 4
gpt4 key购买 nike

我有以下结构

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

CREATE TABLE IF NOT EXISTS `sis_param_tax` (
`id` int(5) NOT NULL auto_increment,
`description` varchar(50) NOT NULL,
`code` varchar(5) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=7;

CREATE TABLE IF NOT EXISTS `sis_param_city` (
`id` int(4) NOT NULL auto_increment,
`name` varchar(100) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;

CREATE TABLE IF NOT EXISTS `sis_supplier` (
`id` int(15) NOT NULL auto_increment,
`name` varchar(200) NOT NULL,
`address` varchar(200) default NULL,
`phone` varchar(30) NOT NULL,
`fk_city` int(11) default NULL,
`fk_tax` int(11) default NULL,
PRIMARY KEY (`id`),
KEY `fk_city` (`fk_city`),
KEY `fk_tax` (`fk_tax`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;

ALTER TABLE `sis_supplier`
ADD CONSTRAINT `sis_supplier_ibfk_4` FOREIGN KEY (`fk_tax`) REFERENCES `sis_param_tax` (`id`) ON DELETE SET NULL ON UPDATE CASCADE,
ADD CONSTRAINT `sis_supplier_ibfk_3` FOREIGN KEY (`fk_city`) REFERENCES `sis_param_city` (`id`) ON DELETE SET NULL ON UPDATE CASCADE;

我的问题是

1. 这个结构允许我有一个城市和税字段 = null 的供应商(以防用户没有设置这些值)。对吧?

2. 如果我删除“X”城市,city="X"的供应商的 fk_city 将设置为空,与 fk_tax 相同。对吧?

3. 我想优化(IF POSSIBLE)以下连接语句,以便我可以显示具有 fk_city 和/或的供应商fk_tax = NULL

SELECT DISTINCT 
sis_supplier.id,
sis_supplier.name,
sis_supplier.telefono,
sis_supplier.address,
sis_supplier.phone,
sis_supplier.cuit,
sis_param_city.name AS city,
sis_param_tax.description AS tax,
sis_supplier.fk_city,
sis_supplier.fk_tax
FROM
sis_supplier
LEFT OUTER JOIN sis_param_city
ON
sis_supplier.`fk_city` = sis_param_city.id
LEFT OUTER JOIN `sis_param_tax`
ON
sis_supplier.`fk_tax` = `sis_param_tax`.`id`

提前致谢

最佳答案

  1. 是。

  2. 是。

  3. 是的,优化是好的。您显示的查询看起来不错。它怎么不适合你?


你用EXPLAIN分析过查询吗? ?这可以帮助您判断何时有未有效使用索引的查询。事实上,所有Chapter 7 Optimization将被推荐阅读。

关于mysql - 优化 Join sentence with foreign keys, and show records with null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1691034/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com