在撰写查询时我总是怀疑的一件事是,我是否在编写最优化的查询?我知道某些事情:
1)使用SELECT field1,filed2而不是SELECT *
2)为表格提供适当的索引
但我确信在编写查询时应该记住更多的事情,因为大多数数据库只能增长更多,最佳查询将有助于执行时间。你能分享一些关于编写查询的技巧和窍门吗?
答案 0 :(得分:3)
测试是衡量绩效的最佳方式。监控实时数据库中的查询并使用 slow query log等内容。
我还建议启用 query cache ,这将为大多数典型的使用情况带来巨大的推动。
答案 1 :(得分:2)
答案 2 :(得分:1)
除了Do's和Dont's之外,您可能会发现Hidden Features of MySQL很有用。
答案 3 :(得分:1)
事实上,没有“提示”可以帮助你 数据库设计需要深入的知识,而不是提示
这些“不要”总有“重量”。大多数此类列表都列出了大多数不重要的内容,而没有提到重要的内容。例如,您的列表是否是烹饪论坛:
第一个令人印象深刻,但从未在现实世界中提供帮助 第二个是正确的,但必须有深厚的知识支持才能做到正确。
所以,它必须是一本书,而不是提示。推荐使用Paul Dubios的人。
答案 4 :(得分:1)
在每个表格中使用以下字段
tablename_id( auto increment , unsigned zerofill)
created_by( timestamp)
tablerow_status( enum ('t','f') by default set 't')
答案 5 :(得分:1)
相关的子查询非常糟糕,但通常不太了解并最终投入生产。它们通常可以通过使用派生表和连接来修复。 http://en.wikipedia.org/wiki/Correlated_subquery
答案 6 :(得分:0)
我今天发现的另一件事是关于COUNT(*)和COUNT(col)
之间的区别使用COUNT(*)比COUNT(col)
更快MYISAM表缓存了此表中的行数,因为innoDB不会缓存行数,如果没有WHERE子句可能会更慢
对于MYISAM和innoDB,最好使用NOT NULL列,而不是允许Null的其他列。
更多详情here