首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MySQL配置:何时使用连字符以及何时使用下划线

MySQL配置:何时使用连字符以及何时使用下划线

在MySQL数据库中,何时使用连字符(-)以及何时使用下划线(_)是重要的配置决策,因为它们可以影响查询的性能。以下是一些关于何时使用它们的关键见解:

连字符(-)

  1. 全局唯一索引:当您需要确保字段具有唯一性(如主键或外键约束)时,可以使用连字符。这可以避免自动生成的ID用尽,并确保全局唯一性。
  2. 区分大小写:当您需要按区分大小写排序或查询时,可以使用连字符。例如,在区分大小写的搜索中,您可以使用WHERE column LIKE 'foo-%'来匹配包含"foo"的任意字符串。
  3. 日期/时间格式:当您需要将日期或时间值格式化为特定格式时,可以使用连字符。例如,将日期转换为"YYYY-MM-DD"格式。

下划线(_)

  1. 单个字符:当您需要使用单个字符作为表或列名时,通常使用下划线。例如:table_name_column
  2. 临时表:当您需要创建一个临时表时,可以使用下划线作为表前缀。例如:tmp_table_name_column
  3. 别名:当您需要为表或列设置别名时,可以使用下划线。例如:SELECT t1._column1, t2.column2 AS_column2FROM table1 t1 JOIN table2 t2 ON t1._column3 = t2.column3

总结

在选择连字符或下划线时,请根据您的需求和预期用途进行权衡。使用连字符适用于区分大小写、全局唯一索引和日期/时间格式,而使用下划线适用于单个字符、临时表和别名。为了确保最佳性能和可读性,建议您在配置数据库时遵循上述规则。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

MySQL索引的分类、何时使用何时使用何时失效?

1、分类 MySQL索引分为普通索引、唯一索引、主键索引、组合索引、全文索引。...2、何时使用索引 MySQL每次查询只使用一个索引。与其说是“数据库查询只能用到一个索引”,倒不如说,和全表扫描比起来,去分析两个索引B+树更加耗费时间。...%'; 聚集函数MIN(),MAX()中的字段; order by和group by字段; 3、何时使用索引 表记录太少; 数据重复且分布平均的字段(只有很少数据值的列); 经常插入、删除、修改的表要减少索引...; text,image等类型不应该建立索引,这些列的数据量大(假如text前10个字符唯一,也可以对text前10个字符建立索引); MySQL能估计出全表扫描比使用索引更快时,不使用索引; 4、索引何时失效...如果查询字段相同,也可以使用索引。例如where A=a1 or A=a2(生效),where A=a or B=b(失效) 如果列类型是字符串,要使用引号。

84950

MySQL 索引的分类、何时使用何时使用何时失效?

作者:绕远的偶人 blog.csdn.net/weixin_39420024/article/details/80040549 1、分类 MySQL索引分为普通索引、唯一索引、主键索引、组合索引、全文索引...2、何时使用索引 MySQL每次查询只使用一个索引。与其说是“数据库查询只能用到一个索引”,倒不如说,和全表扫描比起来,去分析两个索引B+树更加耗费时间。...%'; 聚集函数MIN(),MAX()中的字段; order by和group by字段; 3、何时使用索引 表记录太少; 数据重复且分布平均的字段(只有很少数据值的列); 经常插入、删除、修改的表要减少索引...; text,image等类型不应该建立索引,这些列的数据量大(假如text前10个字符唯一,也可以对text前10个字符建立索引); MySQL能估计出全表扫描比使用索引更快时,不使用索引; 4、索引何时失效...如果查询字段相同,也可以使用索引。例如where A=a1 or A=a2(生效),where A=a or B=b(失效) 如果列类型是字符串,要使用引号。

99640
  • 何时使用Elasticsearch而不是MySql

    ,每个表由多个行(row)和列(column)组成,每个列有一个预定义的数据类型,例如整数、字符串、日期等。...MySQL 的查询语言是字符串形式的,需要拼接或转义特殊字符,而 Elasticsearch 的查询语言是 JSON 形式的,可以直接使用对象或数组表示。...MySQL 和 Elasticsearch 的分布式和高可用有以下几点区别: MySQL 的分布式和高可用是可选的,需要额外配置和管理,而 Elasticsearch 的分布式和高可用是内置的,无需额外操作...MySQL使用缓冲池(buffer pool)来缓存数据和索引,以提高查询效率。MySQL 的性能主要取决于硬件资源、存储引擎、索引设计、查询优化等因素。...使用场景 MySQL 和 Elasticsearch 适用于不同的使用场景,根据不同的业务需求,可以选择合适的数据库系统或组合使用两者。

    28320

    何时使用MongoDB而不是MySql

    MySQL 使用 GPL 协议,使得任何人均可以免费使用 MySQL 并且可以对其进行代码修改。...MySQL 和 MongoDB 数据库平台都使用哈希索引、B- 树(MySql实际使用的是B+ 树)索引和其他几种索引。 用户界面 MongoDB 和 MySQL 都易于使用。...编程语言 MySQL 和 MongoDB 与各种相同的编程语言兼容。MongoDB 和 MySQL 都可以与 Java、Python、Node.js、PHP、Ruby 以及 C# 结合使用。...文档和社区支持 MySQL 和 MongoDB 在各自的网站上都有详细的官方文档。两者的教程、手册和指南包含安装、配置和运行操作任务的完整说明。...可扩展性 MongoDB 使用复制和分片进行水平扩展。 MySQL 使用纵向扩展和只读副本来大规模提高性能。 查询语言 MongoDB 使用 MongoDB 查询语言。 MySQL 使用 SQL。

    82620

    何时使用Elasticsearch而不是MySql

    数据模型 MySQL 是一个关系型数据库管理系统(RDBMS),它使用表(table)来存储结构化的数据,每个表由多个行(row)和列(column)组成,每个列有一个预定义的数据类型,例如整数、字符串...实现了商城所需的首页展示、商品分类、商品详情、商品 sku、分词搜索、购物车、结算下单、支付宝/微信支付、收单评论以及完善的后台管理等一系列功能。...MySQL 的查询语言是字符串形式的,需要拼接或转义特殊字符,而 Elasticsearch 的查询语言是 JSON 形式的,可以直接使用对象或数组表示。...MySQL 和 Elasticsearch 的分布式和高可用有以下几点区别: MySQL 的分布式和高可用是可选的,需要额外配置和管理,而 Elasticsearch 的分布式和高可用是内置的,无需额外操作...使用场景 MySQL 和 Elasticsearch 适用于不同的使用场景,根据不同的业务需求,可以选择合适的数据库系统或组合使用两者。

    57710

    如何(以及何时使用Python While循环

    for 循环更容易使用,但在某些情况下需要使用 while 循环。例如,您可能不知道必须重复执行该语句的次数。 我们来看一下执行相同操作的基本 Python 循环示例。...现在,让我们使用 while 循环执行相同操作。我们必须做的第一件事是用以下内容定义 i: i = 1 接下来,我们创建 lop,其中指出当 i 小于 11 时,以 1 的增量打印 i。...最后,我们使用以下内容打印姓名: print(names) 整个代码如下所示: names = [] new_name = '' while new_name !...我们可以使用一个将 new_name 定义为除 end 之外的任何内容的 for 循环来解决此问题,如下所示: if new_name !...这些循环是一个基本的编程方面,您将在代码中经常使用它们。

    11910

    何时以及如何在你的本地开发环境中使用 HTTPS

    但是在某些情况下,你需要使用 HTTPS 在本地运行站点。 所以本文将针对 2 个问题展开: 何时需要在本地开发环境中使用 HTTPS? 如何在本地开发环境中使用 HTTPS?...何时需要在本地开发环境中使用 HTTPS 在本地开发时,默认情况下使用 http://localhost。Service Workers, Web 认证 API, 以及一些别的等都可以工作。...何时使用 HTTPS 进行本地开发 如何在本地开发环境中使用 HTTPS 你可能会遇到一些特殊情况,比如 http://localhost 网站的行为不像 HTTPS 网站,或者你可能只是想使用一个不是...这就是为什么你不必使用复杂的配置或参数运行 mkcert 命令来生成正确的证书; mkcert 是一个跨平台的工具,团队中的任何人都可以使用它。...配置你的服务器。现在需要告诉服务器使用 HTTPS (因为开发服务器默认使用 HTTP)并使用刚刚创建的 TLS 证书。

    2.6K30

    数据库代理开发人员指南:何时使用以及如何创建

    如此复杂的平台需要集中监控、查询验证、警报、自定义分片以及更好的安全性等等。虽然您可以从数据库服务器获得很多这些功能,但实施数据库代理可能是一个更好的方法(如果您准备投资)。...当应用程序使用已弃用的表时收到通知,等等。 何时使用数据库代理 并非所有系统都需要数据库代理,尤其是在早期阶段。...Go 编写自定义数据库代理服务 现在,我们将使用 Go 实现自己的 MySQL 代理。...但是,为了简化演示,我们将使用字符串匹配和替换。...如你所见,我们可以使用常规的 MySQL 客户端,这简化了代理的使用。 这意味着 orders_v1 表被重定向到 orders_v2。

    14410

    python中那些双下划线开头得函数和变量

    因为下划线对解释器有特殊的意义,而且是内建标识符所使用的符号,我们建议程序员避免用下划线作为变量名的开始。一般来讲,变量名_xxx被看作是“私有 的”,在模块或类外不可以使用。...“单下划线” 开始的成员变量叫做保护变量,意思是只有类对象和子类对象自己能访问到这些变量;“双下划线” 开始的是私有成员,意思是只有类对象自己能访问,子类对象也不能访问到这个数据。...如果要控制实际创建进程,请使用__new__()方法。按照约定,__repr__()方法所返回的字符串为合法的 Python 表达式。在调用 print(x) 的同时也调用了__str__() 方法。...许多数据类型都可以进行比较——字符串、列表,甚至字典。如果要创建自己的类,且对象之间的比较有意义,可以使用下面的特殊方法来实现比较。序号目的所编写代码Python 实际调用①相等x == yx....如果创建了自定义类,且希望它能够 pickle,阅读 pickle 协议 了解下列特殊方法何时以及如何被调用。序号目的所编写代码Python 实际调用①自定义对象的复制 copy.copy(x)x.

    6610

    Python中下划线---完全解读

    因为下划线对解释器有特殊的意义,而且是内建标识符所使用的符号,我们建议程序员避免用下划线作为变量名的开始。一般来讲,变量名_xxx被看作是“私有 的”,在模块或类外不可以使用。...“单下划线” 开始的成员变量叫做保护变量,意思是只有类对象和子类对象自己能访问到这些变量; “双下划线” 开始的是私有成员,意思是只有类对象自己能访问,子类对象也不能访问到这个数据。...如果要控制实际创建进程,请使用 __new__() 方法。 按照约定, __repr__() 方法所返回的字符串为合法的 Python 表达式。...许多数据类型都可以进行比较——字符串、列表,甚至字典。如果要创建自己的类,且对象之间的比较有意义,可以使用下面的特殊方法来实现比较。...如果创建了自定义类,且希望它能够 pickle,阅读 pickle 协议 了解下列特殊方法何时以及如何被调用。

    1.6K110

    数据库PostrageSQL-动态追踪

    这些探针的目的是被数据库开发者和管理员使用。默认情况下,探针不被编译到PostgreSQL中;用户需要显式地告诉配置脚本使得探针可用。...动态追踪的编译 默认情况下,探针是不可用的,因此你将需要显式地告诉配置脚本让探针在PostgreSQL中可用。要包括 DTrace 支持,在配置时指定–enable-dtrace。...值得注意的是,在这样写的时候,SystemTap 脚本必须使用下划线代替字符来引用探针名。在未来的 SystemTap 发行中这很可能会被修复。...在一个使用探针的 DTrace 脚本中,双下划线需要被替换为一个字符,因此 ,对用户而言transaction-start是文档名。...在大多数平台上,如果用–enable-dtrace编译了PostgreSQL,无论何时当控制经过一个追踪宏时,都会评估该宏的参数,即使没有进行追踪也会这样做。

    1K30

    Python 魔法函数总结

    下划线与类函数、变量 Python用下划线作为变量前缀和后缀指定特殊变量、函数 单下划线开头 保护变量,只有类对象和子类对象自己能访问到这些变量 不能用 ’from module import *’ 导入...不能直接访问的类属性,需通过类提供的接口进行访问 双下划线开头 私有成员,只有类对象自己能访问,子类对象也不能访问到这个数据 前后双下划线 python里特殊方法专用的标识,也称为保留属性、魔法函数...如果要控制实际创建进程,请使用 __new__() 方法。 按照约定, __repr__() 方法所返回的字符串为合法的 Python 表达式。...许多数据类型都可以进行比较——字符串、列表,甚至字典。如果要创建自己的类,且对象之间的比较有意义,可以使用下面的特殊方法来实现比较。...如果创建了自定义类,且希望它能够 pickle,阅读 pickle 协议了解下列特殊方法何时以及如何被调用。

    59210

    CA1707:标识符不应包含下划线

    值 规则 ID CA1707 类别 命名 修复是中断修复还是非中断修复 中断 - 在程序集上引发时非中断 - 在类型参数上引发时 原因 标识符的名称包含下划线 (_) 字符。...规则说明 按照约定,标识符名称不包含下划线 (_) 字符。 该规则将检查命名空间、类型、成员和参数。 命名约定为面向公共语言运行时的库提供通用外观。...如何解决冲突 删除名称中的所有下划线字符何时禁止显示警告 请勿禁止显示有关生产代码的警告。 但对于测试代码,可安全地禁止显示此警告。 可通过将警告的严重级别设置为“无”来禁止显示此规则的警告。...对于 Microsoft 代码中当前使用下划线且不能修改的已知方法,应禁止显示此规则。 配置代码以进行分析 使用下面的选项来配置代码库的哪些部分要运行此规则。...包含特定的 API 图面 你可以仅为此规则、为所有规则或为此类别(命名)中的所有规则配置此选项。 有关详细信息,请参阅代码质量规则配置选项。

    48800

    【BBF系列协议】TR-106 CWMP端点和USP代理的数据模型模板

    必须以字母或下划线开头,后续字符必须是字母、数字、下划线字符。...字符很容易与有时由字符算法插入的任意字符混淆。因此,ProfileName不应包含任何字符。...(点)始终用作最后一个字符 参数名称必须区分大小写。层次结构中每个节点的名称必须以字母或下划线开头,后续字符必须是字母、数字、下划线字符。术语“字母”和“数字”的定义见XML规范[附录B/1]。...字符很容易与有时由字符算法插入的任意字符混淆。因此,层次结构中节点的名称不应包含任何字符。此外,层次结构中节点的名称不应以下划线开头。...OUI是[2]中定义的组织上唯一的标识符,必须使用所有大写字母并包括任何前导零将其格式化为六个十六进制数字字符串。域名必须为大写,每个点(“.”)必须用字符下划线替换。

    27510

    再见乱码:5 分钟读懂 MySQL 字符集设置

    作者: 程序猿小卡_casper 原文:https://segmentfault.com/a/1190000012775484 一、内容概述 在MySQL使用过程中,了解字符集、字符序的概念,以及不同设置对数据存储...应该何时设置字符集、字符序 二、字符集、字符序的概念与联系 在数据的存储上,MySQL提供了不同的字符集支持。...简单的来说: 字符集(character set):定义了字符以及字符的编码。 字符序(collation):定义了字符的比较规则。...1、查看支持的字符集 可以通过以下方式查看MYSQL支持的字符集。 方式一: 方式二: 当使用 查看时,也可以加上 或 限定条件。 例子一:使用 限定条件。 例子二:使用 限定条件。...八、选择:何时设置字符集、字符序 一般来说,可以在三个地方进行配置: 创建数据库的时候进行配置mysql server启动的时候进行配置

    1.4K80

    MySQL 中处理日期和时间(一)

    企业还经常需要存储有关何时下订单、何时补货、何时雇用员工,以及有关其日常业务的大量其他信息。 你可能会感到很惊讶,关系数据库不会以相同的方式存储日期和时间。MySQL 尤其具有规范性。...DATE 类型 MySQL 使用 3 个字节来存储 DATE 值。DATE 值的范围是从 1000-01-01 到 9999-12-31。...: TIME 类型 MySQL 使用“HH:MM:SS”格式来查询和显示表示一天中 24 小时内某个时间的时间值。...当表示两个事件之间的时间间隔时,MySQL 使用大于 24 小时的“HHH:MM:SS”格式。...对于输入 DATETIME 值,Navicat 提供了 DATETIME INPUT 控件,它结合了 DATE 和 TIME 控件: DATETIME 值可以使用包含“T”时间部分描述符的字符串文字或通过转换为

    3.5K10

    Go实战抢红包系统(四) - 基础实施层coding

    1 Go的枚举 1.1 定义常数实现枚举 ◆ 类型别名的形式来声明类型 ◆ iota来自增和自动赋值 显然输出为2 这样亦可. 1.2 何时可用iota ,何时又不可用iota呢?...结构体中的循环数据结构,序列化时不会被处理 2.3 结构体中自定义字段名称 ◆ JSON tag key : name,[omitempty,-] ◆ [string]标记 , 定义bool,浮点,整数类型使用字符串编码...无法实现序列化导出,将其改为大写即可 其中的omitempty可以过滤空值(包括0),于是结果中不再包含age信息 有-不会序列化 去除-即可 整型加上string会以字符串形式序列化...前缀+[-_ ]+功能 ◆ 程序级别 可以不分组,比如: boot.ini,config.ini ◆ 应用级别分组 比如app-mysql.properties 环境来变量化配置项 ◆ 不同环境使用不同的配置文件...,比如: [mysql] ◆ 参数: key=value ,有些工具支持冒号分割 ◆ 注释,使用;,有些编辑器和工具支持# ◆ Section作为分组 ◆ props配置客户端使用完整的key来解释 ◆

    69110

    Spring Boot 2.0 新特性(一):配置绑定 2.0 全解析

    配置文件绑定 简单类型 在Spring Boot 2.0中对配置属性加载的时候会除了像1.x版本时候那样移除特殊字符外,还会将配置均以全小写的方式进行匹配和加载。...: mysql database-platform: mysql databasePlatform: mysql database_platform: mysql Tips:推荐使用全小写配合...List类型 由于环境变量中无法使用 [和 ]符号,所以使用 _来替代。任何由下划线包围的数字都会被认为是 []的数组形式。...,都以移除特殊字符并转化小写后实现绑定,比如下面的命令行参数都会实现配置 spring.jpa.databaseplatform=mysql的效果: -Dspring.jpa.database-platform...Spring应用程序的environment中读取属性的时候,每个属性的唯一名称符合如下规则: 通过 .分离各个元素 最后一个 .将前缀与属性名称分开 必须是字母(a-z)和数字(0-9) 必须是小写字母 用字符

    1.5K40
    领券