关于mysql主键位为String,根据插入顺序排序问题

本文分享了在数据库中优化菜单项排序的经验,通过将数据库引擎从InnoDB更改为MyISAM,并调整行格式,成功解决了菜单项按照自定义顺序而非字母顺序排序的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天遇到一种情况,如下:

INSERT INTO `joysuch_hospital`.`sys_menu` (`primary_key`, `parent_key`, `module`, `component`, `svg`, `url`) VALUES ('workbench', NULL, '工作台', 'Workbench', 'workBentch', '/workbench');
INSERT INTO `joysuch_hospital`.`sys_menu` (`primary_key`, `parent_key`, `module`, `component`, `svg`, `url`) VALUES ('assetsMonitor', NULL, '资产监控', 'AssetsMonitor', 'assetsMonitor_svg', '/assetsMonitor');
INSERT INTO `joysuch_hospital`.`sys_menu` (`primary_key`, `parent_key`, `module`, `component`, `svg`, `url`) VALUES ('storageManagement', NULL, '入库管理', 'StorageQuery', 'storage_svg', '/storageManagement/storageQuery');
INSERT INTO `joysuch_hospital`.`sys_menu` (`primary_key`, `parent_key`, `module`, `component`, `svg`, `url`) VALUES ('use', NULL, '领用管理', 'GetUse', 'carryUse_svg', '/use/getUse');
INSERT INTO `joysuch_hospital`.`sys_menu` (`primary_key`, `parent_key`, `module`, `component`, `svg`, `url`) VALUES ('maintenance', NULL, '维保管理', 'MaintenanceQuery', 'maintenance', '/maintenance/maintenanceQuery');
INSERT INTO `joysuch_hospital`.`sys_menu` (`primary_key`, `parent_key`, `module`, `component`, `svg`, `url`) VALUES ('inventory', NULL, '一键盘点', 'Inventory', 'inventory_svg', '/inventory');
INSERT INTO `joysuch_hospital`.`sys_menu` (`primary_key`, `parent_key`, `module`, `component`, `svg`, `url`) VALUES ('repair', NULL, '报修管理', 'RepairHome', 'repaire', '/repair/repairHome');
INSERT INTO `joysuch_hospital`.`sys_menu` (`primary_key`, `parent_key`, `module`, `component`, `svg`, `url`) VALUES ('assetsParamsSet', NULL, '资产参数设置', 'AssetsMonitor', 'assetsParams_svg', '/assetsParamsSet');
INSERT INTO `joysuch_hospital`.`sys_menu` (`primary_key`, `parent_key`, `module`, `component`, `svg`, `url`) VALUES ('historicTrack', NULL, '历史轨迹', 'HistoricTrack', 'historyTrack', '/historicTrack');
INSERT INTO `joysuch_hospital`.`sys_menu` (`primary_key`, `parent_key`, `module`, `component`, `svg`, `url`) VALUES ('edgeAlarm', NULL, '报警查看', 'EdgeAlarm', 'edgeAlarm', '/edgeAlarm');
INSERT INTO `joysuch_hospital`.`sys_menu` (`primary_key`, `parent_key`, `module`, `component`, `svg`, `url`) VALUES ('sub2', NULL, '设备管理', NULL, 'deviceManage', NULL);
INSERT INTO `joysuch_hospital`.`sys_menu` (`primary_key`, `parent_key`, `module`, `component`, `svg`, `url`) VALUES ('deviceManage', 'sub2', '标签管理', 'CardLabelManage', NULL, '/deviceManage/cardLabelManage');
INSERT INTO `joysuch_hospital`.`sys_menu` (`primary_key`, `parent_key`, `module`, `component`, `svg`, `url`) VALUES ('cameraManage', 'sub2', '摄像头管理', 'CameraList', NULL, '/cameraManage/cameraList');
INSERT INTO `joysuch_hospital`.`sys_menu` (`primary_key`, `parent_key`, `module`, `component`, `svg`, `url`) VALUES ('sub_11', NULL, '用户管理', NULL, NULL, NULL);
INSERT INTO `joysuch_hospital`.`sys_menu` (`primary_key`, `parent_key`, `module`, `component`, `svg`, `url`) VALUES ('roleManage', 'sub_11', '角色管理', 'RoleManage', NULL, '/roleManage/roleManage');
INSERT INTO `joysuch_hospital`.`sys_menu` (`primary_key`, `parent_key`, `module`, `component`, `svg`, `url`) VALUES ('sub1', NULL, '地图管理', NULL, 'mapManage', NULL);
INSERT INTO `joysuch_hospital`.`sys_menu` (`primary_key`, `parent_key`, `module`, `component`, `svg`, `url`) VALUES ('enclosure', 'sub1', '围栏设置', 'EnclosureQuery', NULL, '/enclosure/enclosureQuery');
INSERT INTO `joysuch_hospital`.`sys_menu` (`primary_key`, `parent_key`, `module`, `component`, `svg`, `url`) VALUES ('region', 'sub1', '区域设置', 'RegionQuery', NULL, '/region/regionQuery');
INSERT INTO `joysuch_hospital`.`sys_menu` (`primary_key`, `parent_key`, `module`, `component`, `svg`, `url`) VALUES ('mapSet', 'sub1', '地图设置', 'MapSet', NULL, '/mapSet');
INSERT INTO `joysuch_hospital`.`sys_menu` (`primary_key`, `parent_key`, `module`, `component`, `svg`, `url`) VALUES ('alarmSet', NULL, '报警设置', 'AlarmQuery', 'alarmSet', '/alarmSet/alarmQuery');
INSERT INTO `joysuch_hospital`.`sys_menu` (`primary_key`, `parent_key`, `module`, `component`, `svg`, `url`) VALUES ('userManage', 'sub_11', '用户管理', 'UserHome', NULL, '/userManage/userHome');
INSERT INTO `joysuch_hospital`.`sys_menu` (`primary_key`, `parent_key`, `module`, `component`, `svg`, `url`) VALUES ('sub10', NULL, '系统设置', NULL, 'sysSet', NULL);
INSERT INTO `joysuch_hospital`.`sys_menu` (`primary_key`, `parent_key`, `module`, `component`, `svg`, `url`) VALUES ('homeMenuSet', 'sub10', '首页菜单设置', 'HomeMenuSet', NULL, '/homeMenuSet');
INSERT INTO `joysuch_hospital`.`sys_menu` (`primary_key`, `parent_key`, `module`, `component`, `svg`, `url`) VALUES ('licenceSet', 'sub10', 'Licence', 'LicenceSet', NULL, '/licenceSet');
INSERT INTO `joysuch_hospital`.`sys_menu` (`primary_key`, `parent_key`, `module`, `component`, `svg`, `url`) VALUES ('otherParamSet', 'sub10', '其他参数设置', 'OtherParamSet', NULL, '/otherParamSet');

数据库需要按照这个顺序排列,主键为primary_key

刚开始死活顺序不对,默认按照的主键的手写字母来排序的

后来发现需要修改数据库引擎

修改之前

DROP TABLE IF EXISTS `sys_menu`;
CREATE TABLE `sys_menu` (
  `primary_key` varchar(20) NOT NULL,
  `parent_key` varchar(20) DEFAULT NULL COMMENT '父级id',
  `module` varchar(20) NOT NULL COMMENT '模块名称',
  `component` varchar(50) DEFAULT NULL COMMENT '组件名称',
  `svg` varchar(50) DEFAULT NULL COMMENT '图标名称',
  `url` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`primary_key`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT;

修改之后 

DROP TABLE IF EXISTS `sys_menu`;
CREATE TABLE `sys_menu` (
  `primary_key` varchar(20) NOT NULL,
  `parent_key` varchar(20) DEFAULT NULL COMMENT '父级id',
  `module` varchar(20) NOT NULL COMMENT '模块名称',
  `component` varchar(50) DEFAULT NULL COMMENT '组件名称',
  `svg` varchar(50) DEFAULT NULL COMMENT '图标名称',
  `url` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`primary_key`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;

发现了吗,

引擎由   --->>>InnoDB 改为了 MyISAM 

行格式由--->>>COMPACT 改为了 DYNAMIC

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值