mysql的搜索性能

mysql的搜索性能,mysql,performance,search,Mysql,Performance,Search,作为确认,mysql中搜索引擎的最佳选择是什么?搜索单词还是数字 让我们想象一群学生。应该有一个学生表、一个班级表和一个注册表(将学生与具有唯一id的班级相关联),还是只有一个包含所有学生数据和班级名称的表格注册 只要考虑性能,不必担心结构和其他任何事情,一旦所有的过程都完成了,我就可以使用安装在计算机中的软件,将所有内容与服务器同步 关键是要创建一个记录数千次注册的日志,并将其放在一个能够对班级、学生进行分组、搜索、制作图表以及其他一切的系统中。我关心的是当php开始查询所有数据时mysql的

作为确认,mysql中搜索引擎的最佳选择是什么?搜索单词还是数字

让我们想象一群学生。应该有一个学生表、一个班级表和一个注册表(将学生与具有唯一id的班级相关联),还是只有一个包含所有学生数据和班级名称的表格注册

只要考虑性能,不必担心结构和其他任何事情,一旦所有的过程都完成了,我就可以使用安装在计算机中的软件,将所有内容与服务器同步

关键是要创建一个记录数千次注册的日志,并将其放在一个能够对班级、学生进行分组、搜索、制作图表以及其他一切的系统中。我关心的是当php开始查询所有数据时mysql的性能

什么会更好?使用ID搜索数千行并将其内部联接,或使用名称和字符串搜索数千行 致以最诚挚的问候

简单回答:


尽可能避免使用未引用的文本字段,以及根据数据库的用途(仓库或生产)进行索引的良好措施,并尽可能实施3NF。如果您不确定这需要什么,则不建议使用低于3NF的索引,而高于3NF的索引对您来说可能太复杂,始终打开句柄。

数字和字符串之间的性能差异很小。性能的主要组成部分是需要触摸多少行。另一个查询的开销也是昂贵的

因此,这是低效的:

SELECT id  FROM students  WHERE name...             -- grab a bunch of ids
SELECT ... FROM foo  WHERE student_id IN (...) ...  -- then use them
这是更好的,即使它在逻辑上做同样的事情:

SELECT ...
    FROM students
    JOIN foo  ON foo.student_id = students.id
    WHERE name ...

“什么会更好?”简单回答良好的数据库设计(
规范化
)和索引,然后MySQL可以处理数百万或数十亿条记录的join,很好,数千条记录并不多,所以不要担心性能。您在这里问的问题很多。第一点是规范化,最佳实践要求您规范化数据库。大多数情况下,与一组表示相同数据的规范化表相比,拥有一个单一的整体表是不好的。至于优化查询,这完全是另一种蠕虫。我遇到了问题,因为学生的名字和班级的名字都很大。该表目前有40万条记录,全部是字符串,没有第三个表或内部连接。为了更好地澄清这一点,让DBMS使用数字(最好是整数)而不是其他任何东西被高度视为良好做法。如果需要查询搜索文本列,请避免在实际情况下使用可变长度的列。此外,搜索文本的查询应该避免使用模式。(=是最快的操作员)